Example usage for org.hibernate.internal CriteriaImpl iterateSubcriteria

List of usage examples for org.hibernate.internal CriteriaImpl iterateSubcriteria

Introduction

In this page you can find the example usage for org.hibernate.internal CriteriaImpl iterateSubcriteria.

Prototype

public Iterator<Subcriteria> iterateSubcriteria() 

Source Link

Usage

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);
        }
    });
}