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());
});
}
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();
}
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();
}
}
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();
}
}
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();
}
Aggregations