in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateCriterionAdapter.java [85:175]
protected void addSubqueryCriterionAdapters() {
criterionAdaptors.put(Query.GreaterThanAll.class, new CriterionAdaptor<Query.GreaterThanAll>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.GreaterThanAll criterion, String alias) {
QueryableCriteria subQuery = criterion.getValue();
String propertyName = getPropertyName(criterion, alias);
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery, subQuery);
return Property.forName(propertyName).gtAll(detachedCriteria);
}
});
criterionAdaptors.put(Query.GreaterThanEqualsAll.class, new CriterionAdaptor<Query.GreaterThanEqualsAll>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.GreaterThanEqualsAll criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getValue());
return Property.forName(getPropertyName(criterion, alias)).geAll(detachedCriteria);
}
});
criterionAdaptors.put(Query.LessThanAll.class, new CriterionAdaptor<Query.LessThanAll>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.LessThanAll criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getValue());
return Property.forName(getPropertyName(criterion, alias)).ltAll(detachedCriteria);
}
});
criterionAdaptors.put(Query.LessThanEqualsAll.class, new CriterionAdaptor<Query.LessThanEqualsAll>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.LessThanEqualsAll criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getValue());
return Property.forName(getPropertyName(criterion, alias)).leAll(detachedCriteria);
}
});
criterionAdaptors.put(Query.GreaterThanSome.class, new CriterionAdaptor<Query.GreaterThanSome>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.GreaterThanSome criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getValue());
return Property.forName(getPropertyName(criterion, alias)).gtSome(detachedCriteria);
}
});
criterionAdaptors.put(Query.GreaterThanEqualsSome.class, new CriterionAdaptor<Query.GreaterThanEqualsSome>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.GreaterThanEqualsSome criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getValue());
return Property.forName(getPropertyName(criterion, alias)).geSome(detachedCriteria);
}
});
criterionAdaptors.put(Query.LessThanSome.class, new CriterionAdaptor<Query.LessThanSome>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.LessThanSome criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getValue());
return Property.forName(getPropertyName(criterion, alias)).ltSome(detachedCriteria);
}
});
criterionAdaptors.put(Query.LessThanEqualsSome.class, new CriterionAdaptor<Query.LessThanEqualsSome>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.LessThanEqualsSome criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getValue());
return Property.forName(getPropertyName(criterion, alias)).leSome(detachedCriteria);
}
});
criterionAdaptors.put(Query.NotIn.class, new CriterionAdaptor<Query.NotIn>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.NotIn criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getSubquery());
return Property.forName(getPropertyName(criterion, alias)).notIn(detachedCriteria);
}
});
criterionAdaptors.put(Query.Exists.class, new CriterionAdaptor<Query.Exists>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.Exists criterion, String alias) {
final QueryableCriteria subquery = criterion.getSubquery();
String subqueryAlias = subquery.getAlias();
if (subquery.getAlias() == null) {
subqueryAlias = criterion.getSubquery().getPersistentEntity().getJavaClass().getSimpleName() + ALIAS;
}
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,subquery, subqueryAlias);
return Subqueries.exists(detachedCriteria);
}
});
criterionAdaptors.put(Query.NotExists.class, new CriterionAdaptor<Query.NotExists>() {
@Override
public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.NotExists criterion, String alias) {
DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getSubquery());
return Subqueries.notExists(detachedCriteria);
}
});
}