List of usage examples for org.hibernate.internal CriteriaImpl iterateSubcriteria
public Iterator<Subcriteria> iterateSubcriteria()
From source file:org.grails.orm.hibernate.query.HibernateQuery.java
License:Apache License
@Override public Object clone() { final CriteriaImpl impl = (CriteriaImpl) criteria; final HibernateSession hibernateSession = (HibernateSession) getSession(); final GrailsHibernateTemplate hibernateTemplate = (GrailsHibernateTemplate) hibernateSession .getNativeInterface();//from w w w. ja va 2 s . c o m return hibernateTemplate.execute(new GrailsHibernateTemplate.HibernateCallback<Object>() { @Override public HibernateQuery doInHibernate(Session session) throws HibernateException, SQLException { Criteria newCriteria = session.createCriteria(impl.getEntityOrClassName()); Iterator iterator = impl.iterateExpressionEntries(); while (iterator.hasNext()) { CriteriaImpl.CriterionEntry entry = (CriteriaImpl.CriterionEntry) iterator.next(); newCriteria.add(entry.getCriterion()); } Iterator subcriteriaIterator = impl.iterateSubcriteria(); while (subcriteriaIterator.hasNext()) { CriteriaImpl.Subcriteria sub = (CriteriaImpl.Subcriteria) subcriteriaIterator.next(); newCriteria.createAlias(sub.getPath(), sub.getAlias(), sub.getJoinType(), sub.getWithClause()); } return new HibernateQuery(newCriteria, hibernateSession, entity); } }); }