public class ORMUnitTestCase extends BaseCoreFunctionalTestCase {
@Override
protected Class[] getAnnotatedClasses() {
return new Class[]{
Parent.class,
Child.class
};
}
@Override
protected void configure(Configuration configuration) {
super.configure(configuration);
configuration.setProperty(AvailableSettings.SHOW_SQL, Boolean.TRUE.toString());
configuration.setProperty(AvailableSettings.FORMAT_SQL, Boolean.TRUE.toString());
}
@Test
public void hhh12999Tuple() throws Exception {
Session s = openSession();
Transaction tx = s.beginTransaction();
Parent parentWithoutChild = new Parent();
parentWithoutChild.setId( 1L );
Parent parentWithChild = new Parent();
parentWithChild.setId( 2L );
Child child = new Child();
child.id = 123L;
parentWithChild.setChild(child);
s.persist(parentWithChild.getChild());
s.persist(parentWithChild);
s.persist(parentWithoutChild);
s.flush();
CriteriaBuilder cb = s.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery( Tuple.class );
Root<Parent> parentRoot = cq.from( Parent.class );
cq.multiselect( parentRoot.get( "id" ), parentRoot.get( "child" ) );
TypedQuery<Tuple> typedQuery = s.createQuery( cq );
List<Tuple> result = typedQuery.getResultList();
assertEquals(2L, result.get( 0 ).get( 0 ));
Child childEntity = (Child) result.get( 0 ).get( 1 );
assertEquals(123L, (long) childEntity.id);
tx.rollback();
s.close();
}
@Entity(name = "Child")
public static class Child {
@Id
Long id;
}
@Entity(name = "Parent")
public static class Parent {
@Id
private Long id;
@OneToOne(fetch = FetchType.LAZY)
private Child child;
public Child getChild() {
return child;
}
public void setChild(Child child) {
this.child = child;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
}