Search in sources :

Example 61 with JpaCriteriaQuery

use of org.hibernate.query.criteria.JpaCriteriaQuery in project hibernate-orm by hibernate.

the class AbstractQueryCacheResultTransformerTest method testAliasToBeanDtoWithNullAliasList.

@Test
public void testAliasToBeanDtoWithNullAliasList(SessionFactoryScope scope) throws Exception {
    CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {

        @Override
        protected ResultTransformer getResultTransformer() {
            return Transformers.aliasToBean(StudentDTO.class);
        }

        @Override
        protected JpaCriteriaQuery getCriteria(Session s) {
            CriteriaBuilder builder = s.getCriteriaBuilder();
            JpaCriteriaQuery criteria = (JpaCriteriaQuery) builder.createQuery();
            Root<Enrolment> root = criteria.from(Enrolment.class);
            criteria.multiselect(root.get("student").get("name").alias("studentName"), root.get("student").get("studentNumber"), root.get("course").get("description").alias("courseDescription"));
            criteria.orderBy(builder.asc(root.get("studentNumber")));
            return criteria;
        // 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 ) );
        }
    };
    HqlExecutor hqlExecutor = new HqlExecutor() {

        @Override
        public Query getQuery(Session s) {
            return s.createQuery("select st.name as studentName, co.description as courseDescription from Enrolment e join e.student st join e.course co order by e.studentNumber").setResultTransformer(Transformers.aliasToBean(StudentDTO.class));
        }
    };
    ResultChecker checker = results -> {
        List resultList = (List) results;
        assertEquals(2, resultList.size());
        StudentDTO dto = (StudentDTO) resultList.get(0);
        assertEquals(courseExpected.getDescription(), dto.getDescription());
        assertEquals(yogiExpected.getName(), dto.getName());
        dto = (StudentDTO) resultList.get(1);
        assertEquals(courseExpected.getDescription(), dto.getDescription());
        assertEquals(shermanExpected.getName(), dto.getName());
    };
    runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
Also used : CriteriaBuilder(jakarta.persistence.criteria.CriteriaBuilder) BasicTypeImpl(org.hibernate.type.internal.BasicTypeImpl) ServiceRegistry(org.hibernate.testing.orm.junit.ServiceRegistry) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) JoinType(jakarta.persistence.criteria.JoinType) JpaSelection(org.hibernate.query.criteria.JpaSelection) AvailableSettings(org.hibernate.cfg.AvailableSettings) Assertions.assertNotEquals(org.junit.jupiter.api.Assertions.assertNotEquals) Assertions.assertNull(org.junit.jupiter.api.Assertions.assertNull) Session(org.hibernate.Session) Constructor(java.lang.reflect.Constructor) ArrayList(java.util.ArrayList) HibernateProxy(org.hibernate.proxy.HibernateProxy) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) Map(java.util.Map) Query(org.hibernate.query.Query) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) SessionFactoryImplementor(org.hibernate.engine.spi.SessionFactoryImplementor) Order(jakarta.persistence.criteria.Order) BigIntJdbcType(org.hibernate.type.descriptor.jdbc.BigIntJdbcType) Transformers(org.hibernate.transform.Transformers) Iterator(java.util.Iterator) ListJoin(jakarta.persistence.criteria.ListJoin) ReflectHelper(org.hibernate.internal.util.ReflectHelper) DomainModel(org.hibernate.testing.orm.junit.DomainModel) AliasToBeanConstructorResultTransformer(org.hibernate.transform.AliasToBeanConstructorResultTransformer) Selection(jakarta.persistence.criteria.Selection) CacheMode(org.hibernate.CacheMode) Assertions.assertSame(org.junit.jupiter.api.Assertions.assertSame) JpaCriteriaQuery(org.hibernate.query.criteria.JpaCriteriaQuery) Test(org.junit.jupiter.api.Test) MapJoin(jakarta.persistence.criteria.MapJoin) List(java.util.List) Root(jakarta.persistence.criteria.Root) SessionFactoryScope(org.hibernate.testing.orm.junit.SessionFactoryScope) CriteriaBuilder(jakarta.persistence.criteria.CriteriaBuilder) JpaRoot(org.hibernate.query.criteria.JpaRoot) LongJavaType(org.hibernate.type.descriptor.java.LongJavaType) Setting(org.hibernate.testing.orm.junit.Setting) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) AliasToEntityMapResultTransformer(org.hibernate.transform.AliasToEntityMapResultTransformer) SessionFactory(org.hibernate.testing.orm.junit.SessionFactory) Path(jakarta.persistence.criteria.Path) Hibernate(org.hibernate.Hibernate) ResultTransformer(org.hibernate.transform.ResultTransformer) Type(org.hibernate.type.Type) Join(jakarta.persistence.criteria.Join) ArrayList(java.util.ArrayList) List(java.util.List) JpaCriteriaQuery(org.hibernate.query.criteria.JpaCriteriaQuery) Session(org.hibernate.Session) Test(org.junit.jupiter.api.Test)

Aggregations

Path (jakarta.persistence.criteria.Path)61 JpaCriteriaQuery (org.hibernate.query.criteria.JpaCriteriaQuery)61 JpaRoot (org.hibernate.query.criteria.JpaRoot)61 CriteriaBuilder (jakarta.persistence.criteria.CriteriaBuilder)60 Join (jakarta.persistence.criteria.Join)60 JoinType (jakarta.persistence.criteria.JoinType)60 ListJoin (jakarta.persistence.criteria.ListJoin)60 MapJoin (jakarta.persistence.criteria.MapJoin)60 Order (jakarta.persistence.criteria.Order)60 Root (jakarta.persistence.criteria.Root)60 Selection (jakarta.persistence.criteria.Selection)60 Constructor (java.lang.reflect.Constructor)60 ArrayList (java.util.ArrayList)60 Iterator (java.util.Iterator)60 List (java.util.List)60 Map (java.util.Map)60 CacheMode (org.hibernate.CacheMode)60 Hibernate (org.hibernate.Hibernate)60 Session (org.hibernate.Session)60 AvailableSettings (org.hibernate.cfg.AvailableSettings)60