diff --git a/entitymanager/src/test/java/org/hibernate/ejb/criteria/tuple/Customer.java b/entitymanager/src/test/java/org/hibernate/ejb/criteria/tuple/Customer.java new file mode 100644 index 0000000000..2ee2a9d970 --- /dev/null +++ b/entitymanager/src/test/java/org/hibernate/ejb/criteria/tuple/Customer.java @@ -0,0 +1,43 @@ +package org.hibernate.ejb.criteria.tuple; + +import javax.persistence.Table; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.GeneratedValue; + +/** + * @author Emmanuel Bernard + */ +@Entity +@Table(name="tup_cust") +public class Customer { + private Long id; + private String name; + private Integer age; + + @Id + @GeneratedValue + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } +} diff --git a/entitymanager/src/test/java/org/hibernate/ejb/criteria/tuple/TupleCriteriaTest.java b/entitymanager/src/test/java/org/hibernate/ejb/criteria/tuple/TupleCriteriaTest.java new file mode 100644 index 0000000000..6c249cf3bd --- /dev/null +++ b/entitymanager/src/test/java/org/hibernate/ejb/criteria/tuple/TupleCriteriaTest.java @@ -0,0 +1,74 @@ +package org.hibernate.ejb.criteria.tuple; + +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.Tuple; +import javax.persistence.TupleElement; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.Root; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Path; + +import org.hibernate.ejb.test.TestCase; + +/** + * @author Emmanuel Bernard + */ +public class TupleCriteriaTest extends TestCase { + public void testArray() { + EntityManager em = factory.createEntityManager(); + Customer c1 = new Customer(); + c1.setAge( 18 ); + c1.setName( "Bob" ); + em.getTransaction().begin(); + em.persist( c1 ); + em.flush(); + + final CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery q = cb.createQuery(Object[].class); + Root c = q.from(Customer.class); + q.select( cb.array( c.get(Customer_.name), c.get(Customer_.age) ) ); + List result = em.createQuery(q).getResultList(); + + assertEquals( 1, result.size() ); + assertEquals( c1.getName(), result.get( 0 )[0] ); + assertEquals( c1.getAge(), result.get( 0 )[1] ); + + em.getTransaction().rollback(); + em.close(); + } + + + public void testTuple() { + EntityManager em = factory.createEntityManager(); + Customer c1 = new Customer(); + c1.setAge( 18 ); + c1.setName( "Bob" ); + em.getTransaction().begin(); + em.persist( c1 ); + em.flush(); + + final CriteriaBuilder cb = em.getCriteriaBuilder(); + + CriteriaQuery q = cb.createTupleQuery(); + Root c = q.from(Customer.class); + Path tname = c.get(Customer_.name); + q.multiselect( tname, c.get(Customer_.age).alias("age") ); + List result = em.createQuery(q).getResultList(); + + assertEquals( 1, result.size() ); + //FIXME uncomment when HHH-4724 is fixed +// assertEquals( c1.getName(), result.get(0).get(tname) ); +// assertEquals( c1.getAge(), result.get(0).get("age") ); + + + em.getTransaction().rollback(); + em.close(); + } + + public Class[] getAnnotatedClasses() { + return new Class[] { + Customer.class + }; + } +}