use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testAliasToEntityMapMultiProjectionWithNullAliasList.
@Test
public void testAliasToEntityMapMultiProjectionWithNullAliasList(SessionFactoryScope scope) throws Exception {
CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {
@Override
protected JpaCriteriaQuery getCriteria(Session s) {
CriteriaBuilder builder = s.getCriteriaBuilder();
JpaCriteriaQuery criteria = (JpaCriteriaQuery) builder.createQuery();
final JpaRoot<Enrolment> root = criteria.from(Enrolment.class);
criteria.multiselect(root.get("student").alias("student"), root.get("semester"), root.get("year"), root.get("course").alias("course"));
criteria.orderBy(builder.asc(root.get("studentNumber")));
return criteria;
// 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 );
}
};
HqlExecutor hqlExecutor = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select e.student as student, e.semester, e.year, e.course as course from Enrolment e order by e.studentNumber").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
}
};
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
Map yogiMap = (Map) resultList.get(0);
Map shermanMap = (Map) resultList.get(1);
// TODO: following are initialized for hql and uninitialied for criteria; why?
// assertFalse( Hibernate.isInitialized( yogiMap.get( "student" ) ) );
// assertFalse( Hibernate.isInitialized( shermanMap.get( "student" ) ) );
assertTrue(yogiMap.get("student") instanceof Student);
assertEquals(yogiExpected.getStudentNumber(), ((Student) yogiMap.get("student")).getStudentNumber());
assertEquals(shermanExpected.getStudentNumber(), ((Student) shermanMap.get("student")).getStudentNumber());
assertNull(yogiMap.get("semester"));
assertNull(yogiMap.get("year"));
assertEquals(courseExpected, yogiMap.get("course"));
assertNull(shermanMap.get("semester"));
assertNull(shermanMap.get("year"));
assertEquals(courseExpected, shermanMap.get("course"));
};
runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testEntityWithJoinedLazyOneToManySingleElementListCriteria.
@Test
public void testEntityWithJoinedLazyOneToManySingleElementListCriteria(SessionFactoryScope scope) throws Exception {
CriteriaExecutor criteriaExecutorUnaliased = new CriteriaExecutor() {
@Override
protected ResultTransformer getResultTransformer() {
return null;
}
@Override
protected JpaCriteriaQuery getCriteria(Session s) {
CriteriaBuilder builder = s.getCriteriaBuilder();
JpaCriteriaQuery<Student> criteria = (JpaCriteriaQuery<Student>) builder.createQuery(Student.class);
Root<Student> root = criteria.from(Student.class);
root.fetch("enrolments", JoinType.LEFT);
criteria.orderBy(builder.asc(root.get("studentNumber")));
return criteria;
// return s.createCriteria( Student.class, "s" )
// .createCriteria( "s.enrolments", Criteria.LEFT_JOIN )
// .addOrder( Order.asc( "s.studentNumber") );
}
};
// CriteriaExecutor criteriaExecutorAliased1 = new CriteriaExecutor() {
// protected JpaCriteriaQuery getCriteria(Session s) {
// // return s.createCriteria( Student.class, "s" )
// // .createCriteria( "s.enrolments", "e", Criteria.LEFT_JOIN )
// // .addOrder( Order.asc( "s.studentNumber") );
// }
// };
// CriteriaExecutor criteriaExecutorAliased2 = new CriteriaExecutor() {
// protected JpaCriteriaQuery getCriteria(Session s) {
// // return s.createCriteria( Student.class, "s" )
// // .createAlias( "s.enrolments", "e", Criteria.LEFT_JOIN )
// // .addOrder( Order.asc( "s.studentNumber") );
// }
// };
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
assertEquals(yogiExpected, resultList.get(0));
assertEquals(shermanExpected, resultList.get(1));
assertNotNull(((Student) resultList.get(0)).getEnrolments());
assertNotNull(((Student) resultList.get(1)).getEnrolments());
if (areDynamicNonLazyAssociationsChecked()) {
assertTrue(Hibernate.isInitialized(((Student) resultList.get(0)).getEnrolments()));
assertEquals(yogiExpected.getEnrolments(), ((Student) resultList.get(0)).getEnrolments());
assertTrue(Hibernate.isInitialized(((Student) resultList.get(1)).getEnrolments()));
assertEquals(shermanExpected.getEnrolments(), ((Student) resultList.get(1)).getEnrolments());
}
};
runTest(null, criteriaExecutorUnaliased, checker, false, scope);
// runTest( null, criteriaExecutorAliased1, checker, false );
// runTest( null, criteriaExecutorAliased2, checker, false );
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testMultiSelectNewListList.
@Test
public void testMultiSelectNewListList(SessionFactoryScope scope) throws Exception {
CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {
@Override
protected ResultTransformer getResultTransformer() {
return Transformers.TO_LIST;
}
@Override
protected JpaCriteriaQuery getCriteria(Session s) {
CriteriaBuilder builder = s.getCriteriaBuilder();
JpaCriteriaQuery criteria = (JpaCriteriaQuery) builder.createQuery();
Root<Student> root = criteria.from(Student.class);
criteria.multiselect(root.get("studentNumber").alias("studentNumber"), root.get("name").alias("name"));
criteria.orderBy(builder.asc(root.get("studentNumber")));
return criteria;
// 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 );
}
};
HqlExecutor hqlExecutor = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select new list(s.studentNumber, s.name) from Student s order by s.studentNumber");
}
};
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
List yogiList = (List) resultList.get(0);
assertEquals(yogiExpected.getStudentNumber(), yogiList.get(0));
assertEquals(yogiExpected.getName(), yogiList.get(1));
List shermanList = (List) resultList.get(1);
assertEquals(shermanExpected.getStudentNumber(), shermanList.get(0));
assertEquals(shermanExpected.getName(), shermanList.get(1));
};
runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testAliasToBeanDtoMultiArgList.
@Test
public void testAliasToBeanDtoMultiArgList(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);
final Path<Object> student = root.get("student");
criteria.multiselect(student.get("name").alias("studentName"), 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( "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);
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testMapKeyList.
@Test
public void testMapKeyList(SessionFactoryScope scope) throws Exception {
CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {
@Override
protected ResultTransformer getResultTransformer() {
return null;
}
@Override
protected JpaCriteriaQuery getCriteria(Session s) {
CriteriaBuilder builder = s.getCriteriaBuilder();
JpaCriteriaQuery criteria = (JpaCriteriaQuery) builder.createQuery();
Root<Student> root = criteria.from(Student.class);
final MapJoin<Object, Object, Order> addresses = root.joinMap("addresses", JoinType.INNER);
criteria.select(addresses.key());
/*
s.createCriteria( Student.class, "s" )
.createAlias( "s.addresses", "a", Criteria.INNER_JOIN )
.setProjection( Projections.property( "s.addresses" ) );
*/
return criteria;
}
};
HqlExecutor hqlExecutor = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select key(s.addresses) from Student s");
}
};
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
assertTrue(resultList.contains("home"));
assertTrue(resultList.contains("work"));
};
runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
Aggregations