use of javax.persistence.Tuple in project hibernate-orm by hibernate.
the class CriteriaLiteralInSelectExpressionTest method testStringLiteral2.
@Test
@TestForIssue(jiraKey = "HHH-9021")
@SkipForDialect(value = { Oracle8iDialect.class, DB2Dialect.class, SQLServerDialect.class, SybaseDialect.class })
public void testStringLiteral2() {
final EntityManager entityManager = getOrCreateEntityManager();
try {
final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
final CriteriaQuery<Tuple> criteriaQuery = builder.createQuery(Tuple.class);
criteriaQuery.from(MyEntity.class);
criteriaQuery.multiselect(builder.equal(builder.literal(1), builder.literal(2)));
final TypedQuery<Tuple> typedQuery = entityManager.createQuery(criteriaQuery);
final List<Tuple> results = typedQuery.getResultList();
assertThat(results.size(), is(1));
assertThat(results.get(0).getElements().size(), is(1));
assertThat(results.get(0).get(0), is(false));
} finally {
entityManager.close();
}
}
use of javax.persistence.Tuple in project hibernate-orm by hibernate.
the class BasicSimpleCaseTest method testCaseIntegerResult.
@Test
@TestForIssue(jiraKey = "HHH-9343")
public void testCaseIntegerResult() {
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Tuple> query = builder.createTupleQuery();
Root<Customer> root = query.from(Customer.class);
Path<String> emailPath = root.get("email");
CriteriaBuilder.Case<Integer> selectCase = builder.selectCase();
selectCase.when(builder.greaterThan(builder.length(emailPath), 13), 2);
selectCase.when(builder.greaterThan(builder.length(emailPath), 12), 1);
Expression<Integer> emailType = selectCase.otherwise(0);
query.multiselect(emailPath, emailType);
em.createQuery(query).getResultList();
}
use of javax.persistence.Tuple in project hibernate-orm by hibernate.
the class TupleCriteriaTest method testInvalidTupleIndexAccess.
@Test
public void testInvalidTupleIndexAccess() {
EntityManager em = entityManagerFactory().createEntityManager();
em.getTransaction().begin();
Customer c1 = new Customer();
c1.setId("c1");
c1.setAge(18);
c1.setName("Bob");
em.persist(c1);
em.getTransaction().commit();
em.close();
// the actual assertion block
em = entityManagerFactory().createEntityManager();
em.getTransaction().begin();
final CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Tuple> criteria = builder.createTupleQuery();
Root<Customer> customerRoot = criteria.from(Customer.class);
criteria.multiselect(customerRoot.get(Customer_.name), customerRoot.get(Customer_.age));
List<Tuple> results = em.createQuery(criteria).getResultList();
assertEquals(1, results.size());
Tuple tuple = results.get(0);
try {
tuple.get(99);
fail("99 is invalid index");
} catch (IllegalArgumentException expected) {
}
try {
tuple.get(99, String.class);
fail("99 is invalid index");
} catch (IllegalArgumentException expected) {
}
tuple.get(0, String.class);
tuple.get(1, Integer.class);
try {
tuple.get(0, java.util.Date.class);
fail("Date is invalid type");
} catch (IllegalArgumentException expected) {
}
em.getTransaction().commit();
em.close();
em = entityManagerFactory().createEntityManager();
em.getTransaction().begin();
em.createQuery("delete Customer").executeUpdate();
em.getTransaction().commit();
em.close();
}
use of javax.persistence.Tuple in project hibernate-orm by hibernate.
the class QueryTest method testTypedScalarQueries.
@Test
public void testTypedScalarQueries() {
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
try {
Item item = new Item("Mouse", "Micro$oft mouse");
em.persist(item);
assertTrue(em.contains(item));
em.getTransaction().commit();
em.getTransaction().begin();
Object[] itemData = em.createQuery("select i.name,i.descr from Item i", Object[].class).getSingleResult();
assertEquals(2, itemData.length);
assertEquals(String.class, itemData[0].getClass());
assertEquals(String.class, itemData[1].getClass());
Tuple itemTuple = em.createQuery("select i.name,i.descr from Item i", Tuple.class).getSingleResult();
assertEquals(2, itemTuple.getElements().size());
assertEquals(String.class, itemTuple.get(0).getClass());
assertEquals(String.class, itemTuple.get(1).getClass());
Item itemView = em.createQuery("select new Item(i.name,i.descr) from Item i", Item.class).getSingleResult();
assertNotNull(itemView);
assertEquals("Micro$oft mouse", itemView.getDescr());
itemView = em.createNamedQuery("query-construct", Item.class).getSingleResult();
assertNotNull(itemView);
assertEquals("Micro$oft mouse", itemView.getDescr());
em.remove(item);
em.getTransaction().commit();
} catch (Exception e) {
if (em.getTransaction() != null && em.getTransaction().isActive()) {
em.getTransaction().rollback();
}
throw e;
} finally {
em.close();
}
}
use of javax.persistence.Tuple in project hibernate-orm by hibernate.
the class CriteriaTest method test_criteria_group_by_example.
@Test
public void test_criteria_group_by_example() {
doInJPA(this::entityManagerFactory, entityManager -> {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> criteria = builder.createQuery(Tuple.class);
Root<Person> root = criteria.from(Person.class);
criteria.groupBy(root.get("address"));
criteria.multiselect(root.get("address"), builder.count(root));
List<Tuple> tuples = entityManager.createQuery(criteria).getResultList();
for (Tuple tuple : tuples) {
String name = (String) tuple.get(0);
Long count = (Long) tuple.get(1);
}
assertEquals(2, tuples.size());
});
}
Aggregations