From: Rob M. (JIRA) <no...@at...> - 2005-09-14 23:04:55
|
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 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 |