[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-957) SubqueryExpression throws ClassCastException on DetachedCriteria subqueries

Steve Ebersole (JIRA) noreply at atlassian.com
Mon Dec 18 10:24:05 EST 2006


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-957?page=all ]

Steve Ebersole updated HHH-957:
-------------------------------

    Comment: was deleted

> SubqueryExpression throws ClassCastException on DetachedCriteria subqueries
> ---------------------------------------------------------------------------
>
>          Key: HHH-957
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-957
>      Project: Hibernate3
>         Type: Bug

>     Versions: 3.0.5
>  Environment: Oracle 9i, but probably not DB specific.
>     Reporter: Rob MacGrogan
>     Priority: Minor
>  Attachments: SubqueryExpression.java, SubqueryExpression.java, subcriteria-patch.txt
>
>
> The toSqlString() method in SubqueryExpression contains a line that casts a Criteria object to CriteriaImpl in order to call the getSession() method. However, if DetachedCriteria is used as a subquery in a Criteria query, the underlying Criteria object will be CriteriaImpl.Subcriteria, thus a ClassCastException will be thrown.
> I have created a bug fix. Add the following method to SubqueryExpression:
>   private SessionImpl getSessionImpl(Criteria criteria) {
>     SessionImpl session = null;
>     if (criteria instanceof CriteriaImpl) {
>       CriteriaImpl impl = (CriteriaImpl)criteria;
>       session = impl.getSession();
>     }
>     else if (criteria instanceof CriteriaImpl.Subcriteria){
>       CriteriaImpl.Subcriteria sub = (CriteriaImpl.Subcriteria)criteria;
>       //Alert! Recursive call here!
>       session = getSessionImpl(sub.getParent());
>     }
>     return session;
>   }
> And then replace the offending line in toSqlString() with a call to the new method.
> Attached is SubqueryExpression with proposed changes in place.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira




More information about the hibernate-issues mailing list