Пример #1
0
  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();
  }
Пример #2
0
 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;
 }