public void testCountDistinctMultiCols() { EntityManager em = emf.createEntityManager(); Employee2 emp1 = new Employee2(); EmployeeId2 empId1 = new EmployeeId2(); empId1.setFirstName("James"); empId1.setLastName("Bond"); emp1.setEmpId(empId1); Employee2 emp2 = new Employee2(); EmployeeId2 empId2 = new EmployeeId2(); empId2.setFirstName("James"); empId2.setLastName("Obama"); emp2.setEmpId(empId2); Dependent2 dep1 = new Dependent2(); DependentId2 depId1 = new DependentId2(); depId1.setEmpPK(empId1); depId1.setName("Alan"); dep1.setId(depId1); Dependent2 dep2 = new Dependent2(); DependentId2 depId2 = new DependentId2(); depId2.setEmpPK(empId2); depId2.setName("Darren"); dep2.setId(depId2); em.persist(emp1); em.persist(emp2); em.persist(dep1); em.persist(dep2); em.getTransaction().begin(); em.flush(); em.getTransaction().commit(); String[] jpqls = { "SELECT COUNT (DISTINCT d2.emp) FROM Dependent2 d2", "select count (DISTINCT d2) from Dependent2 d2", }; for (int i = 0; i < jpqls.length; i++) { Query q = em.createQuery(jpqls[i]); Long o = (Long) q.getSingleResult(); int count = (int) o.longValue(); assertEquals(2, count); } em.close(); }
public Employee2 createEmployee2(EntityManager em, int id) { Employee2 e = new Employee2(); e.setEmpId(new EmployeeId2("f_" + id, "l_" + id)); for (int i = 0; i < numDependentsPerEmployee; i++) { Dependent2 d = createDependent2(em, dId2++, e); e.addDependent(d); em.persist(d); } em.persist(e); emps2.put(id, e); return e; }