Search in sources :

Example 11 with Tuple

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();
    }
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) Tuple(javax.persistence.Tuple) SkipForDialect(org.hibernate.testing.SkipForDialect) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 12 with Tuple

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();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) Tuple(javax.persistence.Tuple) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 13 with Tuple

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();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) Customer(org.hibernate.jpa.test.metamodel.Customer) Tuple(javax.persistence.Tuple) Test(org.junit.Test) AbstractMetamodelSpecificTest(org.hibernate.jpa.test.metamodel.AbstractMetamodelSpecificTest)

Example 14 with Tuple

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();
    }
}
Also used : Item(org.hibernate.jpa.test.Item) EntityManager(javax.persistence.EntityManager) Tuple(javax.persistence.Tuple) NoResultException(javax.persistence.NoResultException) PersistenceException(javax.persistence.PersistenceException) Test(org.junit.Test)

Example 15 with Tuple

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());
    });
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) Person(org.hibernate.userguide.model.Person) Tuple(javax.persistence.Tuple) Test(org.junit.Test)

Aggregations

Tuple (javax.persistence.Tuple)18 Test (org.junit.Test)15 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)13 EntityManager (javax.persistence.EntityManager)12 AbstractMetamodelSpecificTest (org.hibernate.jpa.test.metamodel.AbstractMetamodelSpecificTest)4 Customer (org.hibernate.jpa.test.metamodel.Customer)4 TestForIssue (org.hibernate.testing.TestForIssue)3 Person (org.hibernate.userguide.model.Person)3 PersistenceException (javax.persistence.PersistenceException)2 TupleElement (javax.persistence.TupleElement)2 ArrayList (java.util.ArrayList)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 NoResultException (javax.persistence.NoResultException)1 Predicate (javax.persistence.criteria.Predicate)1 Selection (javax.persistence.criteria.Selection)1 SQLGrammarException (org.hibernate.exception.SQLGrammarException)1 CriteriaQueryTupleTransformer (org.hibernate.jpa.spi.CriteriaQueryTupleTransformer)1 Item (org.hibernate.jpa.test.Item)1 QueryImplementor (org.hibernate.query.spi.QueryImplementor)1