private static void populateHibernateDetachedCriteria( AbstractHibernateQuery hibernateQuery, org.hibernate.criterion.DetachedCriteria detachedCriteria, QueryableCriteria<?> queryableCriteria) { List<Query.Criterion> criteriaList = queryableCriteria.getCriteria(); for (Query.Criterion criterion : criteriaList) { Criterion hibernateCriterion = HibernateQuery.HIBERNATE_CRITERION_ADAPTER.toHibernateCriterion( hibernateQuery, criterion, null); if (hibernateCriterion != null) { detachedCriteria.add(hibernateCriterion); } } List<Query.Projection> projections = queryableCriteria.getProjections(); ProjectionList projectionList = Projections.projectionList(); for (Query.Projection projection : projections) { Projection hibernateProjection = new HibernateProjectionAdapter(projection).toHibernateProjection(); if (hibernateProjection != null) { projectionList.add(hibernateProjection); } } detachedCriteria.setProjection(projectionList); }
public static org.hibernate.criterion.DetachedCriteria getHibernateDetachedCriteria( AbstractHibernateQuery hibernateQuery, QueryableCriteria<?> queryableCriteria) { String alias = queryableCriteria.getAlias(); PersistentEntity persistentEntity = queryableCriteria.getPersistentEntity(); Class targetClass = persistentEntity.getJavaClass(); org.hibernate.criterion.DetachedCriteria detachedCriteria; if (alias != null) { detachedCriteria = org.hibernate.criterion.DetachedCriteria.forClass(targetClass, alias); } else { detachedCriteria = org.hibernate.criterion.DetachedCriteria.forClass(targetClass); } populateHibernateDetachedCriteria( new HibernateQuery(detachedCriteria, persistentEntity), detachedCriteria, queryableCriteria); return detachedCriteria; }