use of javax.persistence.criteria.Fetch in project tests by datanucleus.
the class CriteriaMetaModelTest method testResult.
/**
* Test basic querying with a result.
*/
public void testResult() {
EntityManager em = getEM();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
CriteriaBuilder cb = emf.getCriteriaBuilder();
CriteriaQuery<Manager> crit = cb.createQuery(Manager.class);
Root<Manager> candidate = crit.from(Manager.class);
Set<Join<Manager, ?>> joins = candidate.getJoins();
// Make sure joins returns empty set
assertNotNull(joins);
assertEquals(0, joins.size());
Set<Fetch<Manager, ?>> fetches = candidate.getFetches();
// Make sure fetches returns empty set
assertNotNull(fetches);
assertEquals(0, fetches.size());
candidate.alias("m");
crit.multiselect(candidate.get(Manager_.firstName), candidate.get(Manager_.lastName));
// DN extension
assertEquals("Generated JPQL query is incorrect", "SELECT m.firstName,m.lastName FROM org.datanucleus.samples.jpa.query.Manager m", crit.toString());
Query q = em.createQuery(crit);
List<Object[]> results = q.getResultList();
assertNotNull("Null results returned!", results);
assertEquals("Number of results is incorrect", 2, results.size());
boolean mourinho = false;
boolean guardiola = false;
Iterator<Object[]> resultIter = results.iterator();
while (resultIter.hasNext()) {
Object[] result = resultIter.next();
assertEquals(2, result.length);
if (result[0].equals("Jose") && result[1].equals("Mourinho")) {
mourinho = true;
} else if (result[0].equals("Pep") && result[1].equals("Guardiola")) {
guardiola = true;
}
}
if (!mourinho) {
fail("Jose Mourinho not returned");
}
if (!guardiola) {
fail("Pep Guardiola not returned");
}
tx.rollback();
} finally {
if (tx.isActive()) {
tx.rollback();
}
em.close();
}
}
Aggregations