/** * Get a component attribute of this property. * * @param propertyName The sub property name * * @return The property */ public Property getProperty(String propertyName) { return forName( getPropertyName() + '.' + propertyName ); }
protected Criteria getCriteria(Session s) { // should use PassThroughTransformer by default return s.createCriteria( Enrolment.class ) .setProjection( Projections.projectionList() .add( Property.forName( "student" ) ) .add( Property.forName( "semester" ) ) .add( Property.forName( "year" ) ) .add( Property.forName( "course" ) ) ) .add( Restrictions.eq( "studentNumber", Long.valueOf( shermanEnrolmentExpected.getStudentNumber() ) ) ); } };
protected Criteria getCriteria(Session s) { // should use PassThroughTransformer by default return s.createCriteria( Enrolment.class, "e" ) .setProjection( Projections.projectionList() .add( Property.forName( "e.student" ) ) .add( Property.forName( "e.semester" ) ) .add( Property.forName( "e.year" ) ) .add( Property.forName( "e.course" ) ) ) .addOrder( Order.asc( "e.studentNumber") ); } };
protected Criteria getCriteria(Session s) { return s.createCriteria( Enrolment.class, "e" ) .setProjection( Projections.projectionList() .add( Property.forName( "e.student" ), "student" ) .add( Property.forName( "e.semester" ), "semester" ) .add( Property.forName( "e.year" ), "year" ) .add( Property.forName( "e.course" ), "course" ) ) .addOrder( Order.asc( "studentNumber") ) .setResultTransformer( Transformers.ALIAS_TO_ENTITY_MAP ); } };
protected Criteria getCriteria(Session s) { return s.createCriteria( Enrolment.class, "e" ) .setProjection( Projections.projectionList() .add( Property.forName( "e.student" ), "student" ) .add( Property.forName( "e.semester" ) ) .add( Property.forName( "e.year" ) ) .add( Property.forName( "e.course" ), "course" ) ) .addOrder( Order.asc( "e.studentNumber") ) .setResultTransformer( Transformers.ALIAS_TO_ENTITY_MAP ); } };
@Test public void testComponentFormulaQuery() { Session s = openSession(); Transaction t = s.beginTransaction(); s.createQuery("from User u where u.person.yob = 1999").list(); s.createCriteria(User.class) .add( Property.forName("person.yob").between( new Integer(1999), new Integer(2002) ) ) .list(); if ( getDialect().supportsRowValueConstructorSyntax() ) { s.createQuery("from User u where u.person = ('gavin', :dob, 'Peachtree Rd', 'Karbarook Ave', 1974, 34, 'Peachtree Rd')") .setDate("dob", new Date("March 25, 1974")).list(); s.createQuery("from User where person = ('gavin', :dob, 'Peachtree Rd', 'Karbarook Ave', 1974, 34, 'Peachtree Rd')") .setDate("dob", new Date("March 25, 1974")).list(); } t.commit(); s.close(); }
protected Criteria getCriteria(Session s) { // should use PassThroughTransformer by default return s.createCriteria( Enrolment.class, "e" ) .setProjection( Projections.projectionList() .add( Property.forName( "e.student" ).as( "st" ) ) .add( Property.forName( "e.semester" ).as("sem" ) ) .add( Property.forName( "e.year" ).as( "yr" ) ) .add( Property.forName( "e.course" ).as( "c" ) ) ) .addOrder( Order.asc( "e.studentNumber") ); } };
@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 ) ); }); }
protected Criteria getCriteria(Session s) { return s.createCriteria( Enrolment.class, "e" ) .createAlias( "e.student", "st" ) .createAlias( "e.course", "co" ) .setProjection( Projections.projectionList() .add( Property.forName( "st.name" ) ) .add( Property.forName( "co.description" ) ) ) .addOrder( Order.asc( "e.studentNumber" ) ); } };
@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 ) ); }); }
@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 ) ); }); }
protected Criteria getCriteria(Session s) { return s.createCriteria( Student.class, "s" ) .setProjection( Projections.projectionList() .add( Property.forName( "s.studentNumber" ).as( "sNumber" ) ) .add( Property.forName( "s.name" ).as( "sName" ) ) ) .addOrder( Order.asc( "s.studentNumber" ) ) .setResultTransformer( Transformers.ALIAS_TO_ENTITY_MAP ); } };
protected Criteria getCriteria(Session s) { return s.createCriteria( Student.class, "s" ) .setProjection( Projections.projectionList() .add( Property.forName( "s.studentNumber" ).as( "sNumber" ) ) .add( Property.forName( "s.name" ).as( "sName" ) ) ) .addOrder( Order.asc( "s.studentNumber" ) ) .setResultTransformer( Transformers.ALIAS_TO_ENTITY_MAP ); } };
protected Criteria getCriteria(Session s) { return s.createCriteria( Student.class, "s" ) .setProjection( Projections.projectionList() .add( Property.forName( "s.studentNumber" ).as( "studentNumber" )) .add( Property.forName( "s.name" ).as( "name" ) ) ) .addOrder( Order.asc( "s.studentNumber" ) ) .setResultTransformer( Transformers.TO_LIST ); } };
protected Criteria getCriteria(Session s) { return s.createCriteria( Enrolment.class, "e" ) .createAlias( "e.student", "st" ) .createAlias( "e.course", "co" ) .setProjection( Projections.projectionList() .add( Property.forName( "st.name" ).as( "studentName" ) ) .add( Property.forName( "st.studentNumber" ) ) .add( Property.forName( "co.description" ).as( "courseDescription" ) ) ) .addOrder( Order.asc( "e.studentNumber" ) ) .setResultTransformer( Transformers.aliasToBean( StudentDTO.class ) ); } };
protected Criteria getCriteria(Session s) throws Exception { return s.createCriteria( Student.class, "s" ) .setProjection( Projections.projectionList() .add( Property.forName( "s.studentNumber" ).as( "studentNumber" )) .add( Property.forName( "s.name" ).as( "name" )) ) .addOrder( Order.asc( "s.studentNumber" ) ) .setResultTransformer( new AliasToBeanConstructorResultTransformer( getConstructor() ) ); } private Constructor getConstructor() throws NoSuchMethodException {
protected Criteria getCriteria(Session s) { return s.createCriteria( Student.class, "s" ) .setProjection( Projections.projectionList() .add( Property.forName( "s.studentNumber" ).as( "studentNumber" ) ) .add( Property.forName( "s.name" ).as( "name" ) ) ) .addOrder( Order.asc( "s.studentNumber" ) ) .setResultTransformer( new AliasToBeanConstructorResultTransformer( getConstructor() ) ); } private Constructor getConstructor() {
protected Criteria getCriteria(Session s) { return s.createCriteria( Enrolment.class, "e" ) .createAlias( "e.student", "st" ) .createAlias( "e.course", "co" ) .setProjection( Projections.projectionList() .add( Property.forName( "st.name" ).as( "studentName" ) ) .add( Property.forName( "co.description" ).as( "courseDescription" ) ) ) .addOrder( Order.asc( "e.studentNumber" ) ) .setResultTransformer( Transformers.aliasToBean( StudentDTO.class ) ); } };
protected Criteria getCriteria(Session s) throws Exception { return s.createCriteria( Student.class, "s" ) .setProjection( Projections.projectionList() .add( Projections.sqlProjection( "555 as studentNumber", new String[]{ "studentNumber" }, new Type[] { StandardBasicTypes.LONG } ) ) .add( Property.forName( "s.name" ).as( "name" ) ) ) .addOrder( Order.asc( "s.studentNumber" ) ) .setResultTransformer( new AliasToBeanConstructorResultTransformer( getConstructor() ) ); } private Constructor getConstructor() throws NoSuchMethodException {
protected Criteria getCriteria(Session s) { return s.createCriteria( Enrolment.class, "e" ) .createAlias( "e.student", "st" ) .createAlias( "e.course", "co" ) .setProjection( Projections.projectionList() .add( Property.forName( "st.name" ).as( "studentName" ) ) .add( Projections.sqlProjection( "'lame description' as courseDescription", new String[] { "courseDescription" }, new Type[] { StandardBasicTypes.STRING } ) ) ) .addOrder( Order.asc( "e.studentNumber" ) ) .setResultTransformer( Transformers.aliasToBean( StudentDTO.class ) ); } };