@Test public void testSubqueryWithRestrictionsOnComponentTypes() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "active" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "id", STUDENT_ID ) ); final DetachedCriteria subSelect = DetachedCriteria.forClass( Student.class ); subSelect.setProjection( Projections.max( "age" ) ); subSelect.add( Restrictions.eq( "id", STUDENT_ID ) ); query.add( Property.forName( "age" ).eq( subSelect ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); }
t = s.beginTransaction(); DetachedCriteria dc = DetachedCriteria.forClass(Student.class) .add( Property.forName("studentNumber").eq( new Long(232) ) ) .setProjection( Property.forName("name") ); gavin = ( Student ) s.createCriteria(Student.class) .createCriteria("enrolments") .createCriteria("course") .add( Property.forName("description").eq("Hibernate Training") ) .setProjection( Property.forName("st.name") ); enrolment = ( Enrolment ) s.createCriteria(Enrolment.class, "e")
@Test public void testSubquery() { doInHibernate( this::sessionFactory, session -> { final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "name", "dre" ) ); final DetachedCriteria inner = DetachedCriteria.forClass( Student.class ); inner.setProjection( Projections.min( "age" ) ); query.add( Property.forName( "age" ).eq( inner ) ); query.add( Restrictions.eq( "name", "dre" ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "deleted" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "name", "dre" ) ); final DetachedCriteria inner = DetachedCriteria.forClass( Student.class ); inner.setProjection( Projections.min( "age" ) ); query.add( Property.forName( "age" ).eq( inner ) ); query.add( Restrictions.eq( "name", "dre" ) ); final List list = query.list(); assertThat( list.size(), is( 0 ) ); }); }
subcriteria.add(Property.forName("mv.value").eq(query_val.get(i))); sb.append(query_val.get(i)); } else if (op == OP.like || op == OP.not_like){
@Test public void testSubqueryWithRestrictionsOnComponentTypes2() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "active" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "id", STUDENT_ID ) ); final DetachedCriteria subSelect = DetachedCriteria.forClass( Student.class ); subSelect.setProjection( Projections.max( "age" ) ); subSelect.add( Restrictions.eq( "address", new Address( "London", "Lollard St" ) ) ); subSelect.add( Restrictions.eq( "id", STUDENT_ID ) ); query.add( Property.forName( "age" ).eq( subSelect ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); }
@Test public void testDetachedCriteria() { DetachedCriteria dc = DetachedCriteria.forClass(Student.class) .add( Property.forName("name").eq("Gavin King") ) .addOrder( Order.asc("studentNumber") );
Person p = (Person) s.createCriteria( Person.class ) .createCriteria( "address" ) .add( Property.forName( "zip" ).eq( "3181" ) ) .uniqueResult(); assertNotNull( p );
public Criterion buildPredicate(String val, String regexClause) { return Property.forName("mv.value").eq(val); } },
int fromYear, fromMonth, toYear, toMonth; Property year = Property.forName("year"); Property month = Property.forName("month"); session.createCriteria(CommissionSummary.class).add(Restrictions.disjunction() .add(Restrictions.and(year.eq(fromYear), month.ge(fromMonth)) .add(Restrictions.and(year.gt(fromYear), year.lt(toYear)) .add(Restrictions.and(year.eq(toYear), month.le(toMonth)) );
@Override public Criterion toHibernateCriterion(AbstractHibernateQuery hibernateQuery, Query.Equals criterion, String alias) { String propertyName = getPropertyName(criterion, alias); Object value = criterion.getValue(); if(value instanceof DetachedCriteria) { return Property.forName(propertyName).eq((DetachedCriteria) value); } return Restrictions.eq(propertyName, value); } });
@Override public List<BlockLocationRecord> doInHibernate(Session session) throws HibernateException, SQLException { Criteria c = session.createCriteria(BlockLocationRecord.class); if (blockId != null) c.add(Property.forName("blockId").eq(blockId)); if (tripId != null) c.add(Property.forName("tripId").eq(tripId)); if (vehicleId != null) c.add(Property.forName("vehicleId").eq(vehicleId)); if (serviceDate != 0) c.add(Property.forName("serviceDate").eq(serviceDate)); if (fromTime != 0) c.add(Property.forName("time").ge(fromTime)); if (toTime != 0) c.add(Property.forName("time").le(toTime)); if (recordLimit != 0) c.setFetchSize(recordLimit); c.addOrder(Order.asc("time")); return c.list(); } });
@Override public List<BlockLocationRecord> doInHibernate(Session session) throws HibernateException, SQLException { Criteria c = session.createCriteria(BlockLocationRecord.class); if (blockId != null) c.add(Property.forName("blockId").eq(blockId)); if (tripId != null) c.add(Property.forName("tripId").eq(tripId)); if (vehicleId != null) c.add(Property.forName("vehicleId").eq(vehicleId)); if (serviceDate != 0) c.add(Property.forName("serviceDate").eq(serviceDate)); if (fromTime != 0) c.add(Property.forName("time").ge(fromTime)); if (toTime != 0) c.add(Property.forName("time").le(toTime)); if (recordLimit != 0) c.setFetchSize(recordLimit); c.addOrder(Order.asc("time")); return c.list(); } });
/** * {@inheritDoc} */ @Override public Topic getLastUpdatedTopicInBranch(Branch branch) { //find the last topic in the branch String modificationDateProperty = "modificationDate"; DetachedCriteria topicMaxModificationDateCriteria = DetachedCriteria.forClass(Topic.class) .setProjection(Projections.max(modificationDateProperty)) .add(Restrictions.eq(BRANCH, branch)); //possible that the two topics will be modified at the same time @SuppressWarnings(UNCHECKED) List<Topic> topics = (List<Topic>) session() .createCriteria(Topic.class) .add(Restrictions.eq(BRANCH, branch)) .add(Property.forName(modificationDateProperty).eq(topicMaxModificationDateCriteria)) .list(); return topics.isEmpty() ? null : topics.get(0); }
private void addQueryToCriteria(TripProblemReportQueryBean query, Criteria c) { if (query.getAgencyId() != null) { c.add(Property.forName("tripId.agencyId").eq(query.getAgencyId())); } if (query.getTripId() != null) { c.add(Property.forName("tripId").eq( AgencyAndIdLibrary.convertFromString(query.getTripId()))); } if (query.getTimeFrom() != 0) { c.add(Property.forName("time").ge(query.getTimeFrom())); } if (query.getTimeTo() != 0) { c.add(Property.forName("time").le(query.getTimeTo())); } if (query.getStatus() != null) { c.add(Property.forName("status").eq(query.getStatus())); } if (query.getLabel() != null) { c.add(Property.forName("label").eq(query.getLabel())); } } }
Criterion eq; if (propertyValue instanceof org.hibernate.criterion.DetachedCriteria) { eq = Property.forName(propertyName).eq((org.hibernate.criterion.DetachedCriteria) propertyValue);
Criterion eq; if (propertyValue instanceof org.hibernate.criterion.DetachedCriteria) { eq = Property.forName(propertyName).eq((org.hibernate.criterion.DetachedCriteria) propertyValue);