use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testOneNonEntityProjectionUnique.
@Test
public void testOneNonEntityProjectionUnique(SessionFactoryScope scope) throws Exception {
CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {
@Override
protected ResultTransformer getResultTransformer() {
return null;
}
@Override
protected JpaCriteriaQuery getCriteria(Session s) {
// should use PassThroughTransformer by default
CriteriaBuilder builder = s.getCriteriaBuilder();
JpaCriteriaQuery criteria = (JpaCriteriaQuery) builder.createQuery();
Root<Enrolment> root = criteria.from(Enrolment.class);
criteria.select(root.get("semester"));
criteria.where(builder.equal(root.get("studentNumber"), shermanEnrolmentExpected.getStudentNumber()));
return criteria;
// return s.createCriteria( Enrolment.class, "e" )
// .setProjection( Projections.property( "e.semester" ) )
// .add( Restrictions.eq( "e.studentNumber", shermanEnrolmentExpected.getStudentNumber() ) );
}
};
HqlExecutor hqlExecutor = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select e.semester from Enrolment e where e.studentNumber = :studentNumber").setParameter("studentNumber", shermanEnrolmentExpected.getStudentNumber());
}
};
ResultChecker checker = results -> {
assertTrue(results instanceof Short);
assertEquals(shermanEnrolmentExpected.getSemester(), results);
};
runTest(hqlExecutor, criteriaExecutor, checker, true, scope);
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testJoinWithFetchJoinList.
@Test
public void testJoinWithFetchJoinList(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(Object[].class);
JpaRoot<Student> root = criteria.from(Student.class);
Join<Object, Object> preferredCourse = root.join("preferredCourse", JoinType.LEFT);
root.fetch("enrolments", JoinType.LEFT);
criteria.orderBy(builder.asc(root.get("studentNumber")));
criteria.multiselect(root, preferredCourse);
return criteria;
}
};
HqlExecutor hqlExecutor = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select s, pc from Student s left join fetch s.enrolments left join s.preferredCourse pc order by s.studentNumber");
}
};
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
Object[] yogiObjects = (Object[]) resultList.get(0);
assertEquals(yogiExpected, yogiObjects[0]);
assertEquals(yogiExpected.getPreferredCourse(), yogiObjects[1]);
Object[] shermanObjects = (Object[]) resultList.get(1);
assertEquals(shermanExpected, shermanObjects[0]);
assertNull(shermanObjects[1]);
assertNull(((Student) shermanObjects[0]).getPreferredCourse());
if (areDynamicNonLazyAssociationsChecked()) {
assertTrue(Hibernate.isInitialized(((Student) yogiObjects[0]).getEnrolments()));
assertEquals(yogiExpected.getEnrolments(), ((Student) yogiObjects[0]).getEnrolments());
assertTrue(Hibernate.isInitialized(((Student) shermanObjects[0]).getEnrolments()));
assertEquals(shermanExpected.getEnrolments(), (((Student) shermanObjects[0]).getEnrolments()));
}
};
runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testEntityWithJoinedLazyOneToManySingleElementList.
@Test
public void testEntityWithJoinedLazyOneToManySingleElementList(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 criteria = (JpaCriteriaQuery) builder.createQuery(Object[].class);
Root<Student> root = criteria.from(Student.class);
root.join("enrolments", JoinType.LEFT);
criteria.multiselect(root, root.get("enrolments"));
criteria.orderBy(builder.asc(root.get("studentNumber")));
return criteria;
}
};
HqlExecutor hqlExecutorUnaliased = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select s, s.enrolments from Student s left join s.enrolments order by s.studentNumber");
}
};
HqlExecutor hqlExecutorAliased = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select s, e from Student s left join s.enrolments e order by s.studentNumber");
}
};
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
assertTrue(resultList.get(0) instanceof Object[]);
Object[] yogiObjects = (Object[]) resultList.get(0);
assertEquals(yogiExpected, yogiObjects[0]);
assertEquals(yogiEnrolmentExpected, yogiObjects[1]);
assertTrue(resultList.get(0) instanceof Object[]);
Object[] shermanObjects = (Object[]) resultList.get(1);
assertEquals(shermanExpected, shermanObjects[0]);
assertEquals(shermanEnrolmentExpected, shermanObjects[1]);
};
runTest(hqlExecutorUnaliased, criteriaExecutorUnaliased, checker, false, scope);
runTest(hqlExecutorAliased, null, checker, false, scope);
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testOneSelectNewNoAliasesList.
@Test
public void testOneSelectNewNoAliasesList(SessionFactoryScope scope) throws Exception {
CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {
@Override
protected ResultTransformer getResultTransformer() throws Exception {
return new AliasToBeanConstructorResultTransformer(getConstructor());
}
@Override
protected JpaCriteriaQuery getCriteria(Session s) {
CriteriaBuilder builder = s.getCriteriaBuilder();
JpaCriteriaQuery criteria = (JpaCriteriaQuery) builder.createQuery();
Root<Student> root = criteria.from(Student.class);
criteria.select(root.get("name"));
criteria.orderBy(builder.asc(root.get("studentNumber")));
return criteria;
// return s.createCriteria( Student.class, "s" )
// .setProjection( Projections.property( "s.name" ) )
// .addOrder( Order.asc( "s.studentNumber" ) )
// .setResultTransformer( new AliasToBeanConstructorResultTransformer( getConstructor() ) );
}
private Constructor getConstructor() throws NoSuchMethodException {
return StudentDTO.class.getConstructor(PersonName.class);
}
};
HqlExecutor hqlExecutor = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select new org.hibernate.orm.test.querycache.StudentDTO(s.name) from Student s order by s.studentNumber");
}
};
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
StudentDTO yogi = (StudentDTO) resultList.get(0);
assertNull(yogi.getDescription());
assertEquals(yogiExpected.getName(), yogi.getName());
StudentDTO sherman = (StudentDTO) resultList.get(1);
assertEquals(shermanExpected.getName(), sherman.getName());
assertNull(sherman.getDescription());
};
runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
use of org.hibernate.testing.orm.junit.SessionFactoryScope in project hibernate-orm by hibernate.
the class AbstractQueryCacheResultTransformerTest method testMultiSelectNewMapUsingAliasesList.
@Test
public void testMultiSelectNewMapUsingAliasesList(SessionFactoryScope scope) throws Exception {
CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {
@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("sNumber"), root.get("name").alias("sName"));
criteria.orderBy(builder.asc(root.get("studentNumber")));
return criteria;
// 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 );
}
};
HqlExecutor hqlExecutor = new HqlExecutor() {
@Override
public Query getQuery(Session s) {
return s.createQuery("select new map(s.studentNumber as sNumber, s.name as sName) from Student s order by s.studentNumber");
}
};
ResultChecker checker = results -> {
List resultList = (List) results;
assertEquals(2, resultList.size());
Map yogiMap = (Map) resultList.get(0);
assertEquals(yogiExpected.getStudentNumber(), yogiMap.get("sNumber"));
assertEquals(yogiExpected.getName(), yogiMap.get("sName"));
Map shermanMap = (Map) resultList.get(1);
assertEquals(shermanExpected.getStudentNumber(), shermanMap.get("sNumber"));
assertEquals(shermanExpected.getName(), shermanMap.get("sName"));
};
runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
Aggregations