Search in sources :

Example 6 with Tuple

use of javax.persistence.Tuple in project hibernate-orm by hibernate.

the class CriteriaLiteralsTest method testLiteralsInWhereClause.

@Test
public void testLiteralsInWhereClause() throws Exception {
    doInJPA(this::entityManagerFactory, entityManager -> {
        final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        final CriteriaQuery<Tuple> query = cb.createQuery(Tuple.class);
        final Root<Book> entity = query.from(Book.class);
        query.where(cb.equal(entity.get("name"), cb.literal("( SELECT REPEAT('abc' || ' ', 10000000000 FROM MY_ENTITY )")));
        query.multiselect(cb.literal("abc"), entity.get("name"));
        connectionProvider.clear();
        List<Tuple> tuples = entityManager.createQuery(query).getResultList();
        assertEquals(1, connectionProvider.getPreparedStatements().size());
        assertNotNull(connectionProvider.getPreparedStatement("select 'abc' as col_0_0_, criteriali0_.name as col_1_0_ from Book criteriali0_ where criteriali0_.name=?"));
        assertTrue(tuples.isEmpty());
    });
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) Tuple(javax.persistence.Tuple) Test(org.junit.Test)

Example 7 with Tuple

use of javax.persistence.Tuple in project hibernate-orm by hibernate.

the class BasicSimpleCaseTest method testCaseStringResult.

@Test
@TestForIssue(jiraKey = "HHH-9343")
public void testCaseStringResult() {
    EntityManager em = getOrCreateEntityManager();
    CriteriaBuilder builder = em.getCriteriaBuilder();
    CriteriaQuery<Tuple> query = builder.createTupleQuery();
    Root<Customer> root = query.from(Customer.class);
    Path<String> emailPath = root.get("email");
    CriteriaBuilder.Case<String> selectCase = builder.selectCase();
    selectCase.when(builder.greaterThan(builder.length(emailPath), 13), "Long");
    selectCase.when(builder.greaterThan(builder.length(emailPath), 12), "Normal");
    Expression<String> emailType = selectCase.otherwise("Unknown");
    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 8 with Tuple

use of javax.persistence.Tuple in project hibernate-orm by hibernate.

the class TupleQueryTest method testGetAlias.

@Test
public void testGetAlias() {
    EntityManager em = getOrCreateEntityManager();
    try {
        em.getTransaction().begin();
        User u = new User("Fab");
        em.persist(u);
        em.getTransaction().commit();
        TypedQuery<Tuple> query = em.createQuery("SELECT u.firstName as fn from User u", Tuple.class);
        List<Tuple> result = query.getResultList();
        List<TupleElement<?>> elements = result.get(0).getElements();
        assertThat(elements.size(), is(1));
        final String alias = elements.get(0).getAlias();
        assertThat(alias, is("fn"));
    } catch (Exception e) {
        if (em.getTransaction().isActive()) {
            em.getTransaction().rollback();
        }
        throw e;
    } finally {
        em.close();
    }
}
Also used : EntityManager(javax.persistence.EntityManager) TupleElement(javax.persistence.TupleElement) Tuple(javax.persistence.Tuple) Test(org.junit.Test)

Example 9 with Tuple

use of javax.persistence.Tuple in project hibernate-orm by hibernate.

the class TupleQueryTest method testGetAliasReturnNullIfNoAliasExist.

@Test
public void testGetAliasReturnNullIfNoAliasExist() {
    EntityManager em = getOrCreateEntityManager();
    try {
        em.getTransaction().begin();
        User u = new User("Fab");
        em.persist(u);
        em.getTransaction().commit();
        TypedQuery<Tuple> query = em.createQuery("SELECT u.firstName from User u", Tuple.class);
        List<Tuple> result = query.getResultList();
        List<TupleElement<?>> elements = result.get(0).getElements();
        assertThat(elements.size(), is(1));
        final String alias = elements.get(0).getAlias();
        assertThat(alias, is(nullValue()));
    } catch (Exception e) {
        if (em.getTransaction().isActive()) {
            em.getTransaction().rollback();
        }
        throw e;
    } finally {
        em.close();
    }
}
Also used : EntityManager(javax.persistence.EntityManager) TupleElement(javax.persistence.TupleElement) Tuple(javax.persistence.Tuple) Test(org.junit.Test)

Example 10 with Tuple

use of javax.persistence.Tuple in project hibernate-orm by hibernate.

the class ComponentJoinTest method doTest.

private void doTest(JoinBuilder joinBuilder) {
    EntityManager entityManager = getOrCreateEntityManager();
    entityManager.getTransaction().begin();
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Tuple> criteriaQuery = builder.createTupleQuery();
    Root<Entity> root = criteriaQuery.from(Entity.class);
    Join<Entity, EmbeddedType> join = root.join("embeddedType", JoinType.LEFT);
    // left join to the manyToOne on the embeddable with a string property
    Path<String> path = joinBuilder.buildJoinToManyToOneType(join).get("value");
    // select the path in the tuple
    criteriaQuery.select(builder.tuple(path));
    List<Tuple> results = entityManager.createQuery(criteriaQuery).getResultList();
    Tuple result = results.iterator().next();
    assertEquals(THEVALUE, result.get(0));
    entityManager.getTransaction().commit();
    entityManager.close();
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) Tuple(javax.persistence.Tuple)

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