@Override public org.grails.datastore.mapping.query.api.Criteria notIn(String propertyName, QueryableCriteria<?> subquery) { addToCriteria(Property.forName(propertyName).notIn(convertToHibernateCriteria(subquery))); return this; }
/** * Adds the attribute with the given value for all users in a directory which do not have the attribute set. * * @param directoryId The directory to add attributes for users onto. * @param attrName The name of the attribute to add * @param value The attribute value. */ private void addAttributeWhereMissingInDirectory(final long directoryId, final String attrName, final String value) { DetachedCriteria usersWithAttribute = DetachedCriteria.forClass(InternalUserAttribute.class) .add(Restrictions.eq("name", attrName)) .add(Restrictions.eq("directory.id", directoryId)) .setProjection(Property.forName("user.id")); List<InternalUser> users = session().createCriteria(InternalUser.class) .add(Restrictions.eq("directory.id", directoryId)) .add(Property.forName("id").notIn(usersWithAttribute)).list(); for (InternalUser user : users) { addAttribute(user, attrName, value); } }
@Override public void restrictPaginationByArrayed(Criteria criteria, boolean isArrayed, Consumer<String> errorHandler) { DetachedCriteria subquery = DetachedCriteria.forClass(Array.class) .createAlias("samples", "sample") .setProjection(Projections.property("sample.id")); if (isArrayed) { criteria.add(Property.forName("id").in(subquery)); } else { criteria.add(Property.forName("id").notIn(subquery)); } }
@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); } });
private Criteria getBasicMapCriteria() { DetachedCriteria detachedCriteria = DetachedCriteria.forClass(StatisticsCounter.class) .createAlias("scanRepeatFindingMap", "mapAlias") .add(Restrictions.isNotNull("scanRepeatFindingMap")) .setProjection(property("mapAlias.id")); return sessionFactory.getCurrentSession() .createCriteria(ScanRepeatFindingMap.class) .add(Property.forName("id").notIn(detachedCriteria)); }