From: Rodrigo S. de C. (JIRA) <no...@at...> - 2005-11-05 05:18:14
|
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-957?page=all ] Rodrigo S. de Castro updated HHH-957: ------------------------------------- Attachment: SubqueryExpression.java Minor changes (classes names update) to make it compile with Hibernate 3.1rc2. > 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 > > > 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 |