Search in sources :

Example 16 with Manager

use of org.datanucleus.samples.jpa.query.Manager 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();
    }
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityTransaction(javax.persistence.EntityTransaction) TypedQuery(javax.persistence.TypedQuery) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) Query(javax.persistence.Query) Join(javax.persistence.criteria.Join) EntityManager(javax.persistence.EntityManager) Manager(org.datanucleus.samples.jpa.query.Manager) Fetch(javax.persistence.criteria.Fetch) EntityManager(javax.persistence.EntityManager)

Aggregations

EntityManager (javax.persistence.EntityManager)16 EntityTransaction (javax.persistence.EntityTransaction)16 Manager (org.datanucleus.samples.jpa.query.Manager)16 Query (javax.persistence.Query)15 TypedQuery (javax.persistence.TypedQuery)15 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)15 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)14 Predicate (javax.persistence.criteria.Predicate)10 Team (org.datanucleus.samples.jpa.query.Team)4 Fetch (javax.persistence.criteria.Fetch)3 Join (javax.persistence.criteria.Join)3 Player (org.datanucleus.samples.jpa.query.Player)3 ArrayList (java.util.ArrayList)1 Calendar (java.util.Calendar)1 GregorianCalendar (java.util.GregorianCalendar)1 Tuple (javax.persistence.Tuple)1 TupleElement (javax.persistence.TupleElement)1 ParameterExpression (javax.persistence.criteria.ParameterExpression)1