/** * Creates a sub-query IN expression for this property. I.e., {@code [prop] IN [subquery]} * * @param subselect The sub-query * * @return The expression * * @see Subqueries#propertyIn(String, DetachedCriteria) */ public Criterion in(DetachedCriteria subselect) { return Subqueries.propertyIn( getPropertyName(), subselect ); }
/** * Creates a sub-query NOT IN expression for this property. I.e., {@code [prop] NOT IN [subquery]} * * @param subselect The sub-query * * @return The expression * * @see Subqueries#propertyNotIn(String, DetachedCriteria) */ @SuppressWarnings("UnusedDeclaration") public Criterion notIn(DetachedCriteria subselect) { return Subqueries.propertyNotIn( getPropertyName(), subselect ); }
/** * Creates a sub-query equality expression for this property * * @param subselect The sub-query * * @return The expression * * @see Subqueries#propertyEq(String, DetachedCriteria) */ public Criterion eq(DetachedCriteria subselect) { return Subqueries.propertyEq( getPropertyName(), subselect ); }
@Override public org.grails.datastore.mapping.query.api.Criteria exists(QueryableCriteria<?> subquery) { addToCriteria(Subqueries.exists(convertToHibernateCriteria(subquery))); return this; }
subquery.setProjection(Projections.property("ff.form.formId")); subquery.add(Restrictions.in("ff.formFieldId", anyFormFieldIds)); crit.add(Subqueries.propertyIn("f.formId", subquery)); add(Property.forName("ff.form.formId").eqProperty("f.formId")). add(Restrictions.in("ff.formFieldId", allFormFieldIds)); crit.add(Subqueries.eq((long) containingAllFormFields.size(), subquery));
.setProjection( Property.forName("name") ); gavin = ( Student ) s.createCriteria(Student.class) .add( Subqueries.exists(dc) ) .setReadOnly( true ) .uniqueResult(); .setProjection( Property.forName("name") ); enrolment = ( Enrolment ) s.createCriteria(Enrolment.class, "e") .add( Subqueries.eq("Gavin King", dc2) ) .setReadOnly( true ) .uniqueResult(); .setProjection( Property.forName("st.name") ); enrolment = ( Enrolment ) s.createCriteria(Enrolment.class, "e") .add( Subqueries.eq("Gavin King", dc3) ) .setReadOnly( true ) .uniqueResult();
/** * Creates a equals-all sub-query expression for this property. I.e., {@code [prop] = ALL [subquery]} * * @param subselect The sub-query * * @return The expression * * @see Subqueries#propertyEqAll(String, DetachedCriteria) */ public Criterion eqAll(DetachedCriteria subselect) { return Subqueries.propertyEqAll( getPropertyName(), subselect ); }
/** * Creates a sub-query greater-than-or-equal-to expression for this property * * @param subselect The sub-query * * @return The expression * * @see Subqueries#propertyGe(String, DetachedCriteria) */ public Criterion ge(DetachedCriteria subselect) { return Subqueries.propertyGe( getPropertyName(), subselect ); }
/** * Creates a greater-than-or-equal-to-all sub-query expression for this property. I.e., {@code [prop] >= ALL [subquery]} * * @param subselect The sub-query * * @return The expression * * @see Subqueries#propertyGeAll(String, DetachedCriteria) */ @SuppressWarnings("UnusedDeclaration") public Criterion geAll(DetachedCriteria subselect) { return Subqueries.propertyGeAll( getPropertyName(), subselect ); }
/** * Creates a greater-than-or-equal-to-some sub-query expression for this property. I.e., {@code [prop] >= SOME [subquery]} * * @param subselect The sub-query * * @return The expression * * @see Subqueries#propertyGeSome(String, DetachedCriteria) */ @SuppressWarnings("UnusedDeclaration") public Criterion geSome(DetachedCriteria subselect) { return Subqueries.propertyGeSome( getPropertyName(), subselect ); }
@Override @SuppressWarnings("unchecked") public void clearUnusedForService(ServiceEntity service) { // this will actuall remove all data entities that are associated with an // non-existing dataset or are neither the first or last value for the // dataset, independent of the service DetachedCriteria existingDatasetIds = DetachedCriteria.forClass(DatasetEntity.class) .setProjection(Projections.distinct(Projections .property(DatasetEntity.PROPERTY_PKID))); DetachedCriteria minTimeByDataset = DetachedCriteria.forClass(DataEntity.class) .setProjection(Projections.projectionList() .add(Projections.groupProperty(DataEntity.PROPERTY_SERIES_PKID)) .add(Projections.min(DataEntity.PROPERTY_RESULTTIME))); DetachedCriteria maxTimeByDataset = DetachedCriteria.forClass(DataEntity.class) .setProjection(Projections.projectionList() .add(Projections.groupProperty(DataEntity.PROPERTY_SERIES_PKID)) .add(Projections.max(DataEntity.PROPERTY_RESULTTIME))); Criterion notExistingDataset = Subqueries.propertyNotIn(DataEntity.PROPERTY_SERIES_PKID, existingDatasetIds); Criterion notFirstData = Subqueries.propertiesNotIn(new String[] { DataEntity.PROPERTY_SERIES_PKID, DataEntity.PROPERTY_RESULTTIME }, minTimeByDataset); Criterion notLatestData = Subqueries.propertiesNotIn(new String[] { DataEntity.PROPERTY_SERIES_PKID, DataEntity.PROPERTY_RESULTTIME }, maxTimeByDataset); session.createCriteria(getEntityClass()) .add(Restrictions.or(notExistingDataset, Restrictions.and(notFirstData, notLatestData))) .list() .forEach(session::delete); }
@Override public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.Exists criterion, String alias) { DetachedCriteria detachedCriteria = toHibernateDetachedCriteria(hibernateQuery,criterion.getSubquery()); return Subqueries.exists(detachedCriteria); } });
public Criterion eqAll(DetachedCriteria subselect) { return Subqueries.propertyEqAll( getPropertyName(), subselect ); }
public Criterion ge(DetachedCriteria subselect) { return Subqueries.propertyGe( getPropertyName(), subselect ); }
public Criterion geAll(DetachedCriteria subselect) { return Subqueries.propertyGeAll( getPropertyName(), subselect ); }
public Criterion geSome(DetachedCriteria subselect) { return Subqueries.propertyGeSome( getPropertyName(), subselect ); }
/** * Convenience method that adds an expression to the given <code>criteria</code> according to * what types of person objects is wanted * * @param criteria * @param personType * @return the given criteria (for chaining) */ private Criteria getCriteriaPersonModifier(Criteria criteria, List<PERSON_TYPE> personTypes) { if (personTypes.contains(PERSON_TYPE.PATIENT)) { DetachedCriteria crit = DetachedCriteria.forClass(Patient.class, "patient").setProjection( Property.forName("patientId")); criteria.add(Subqueries.propertyIn("person.personId", crit)); } if (personTypes.contains(PERSON_TYPE.USER)) { DetachedCriteria crit = DetachedCriteria.forClass(User.class, "user").setProjection(Property.forName("userId")); criteria.add(Subqueries.propertyIn("person.personId", crit)); } return criteria; }
public Criterion notIn(DetachedCriteria subselect) { return Subqueries.propertyNotIn( getPropertyName(), subselect ); }