public void testFiltersWithJoinedSubclass() { Session s = openSession(); s.enableFilter("region").setParameter("userRegion", "US"); Transaction t = s.beginTransaction(); prepareTestData(s); s.clear(); List results; Iterator itr; results = s.createQuery("from Person").list(); assertEquals("Incorrect qry result count", 4, results.size()); s.clear(); results = s.createQuery("from Employee").list(); assertEquals("Incorrect qry result count", 2, results.size()); s.clear(); results = new ArrayList( new HashSet(s.createQuery("from Person as p left join fetch p.minions").list())); assertEquals("Incorrect qry result count", 4, results.size()); itr = results.iterator(); while (itr.hasNext()) { // find john final Person p = (Person) itr.next(); if (p.getName().equals("John Doe")) { Employee john = (Employee) p; assertEquals("Incorrect fecthed minions count", 1, john.getMinions().size()); break; } } s.clear(); results = new ArrayList( new HashSet(s.createQuery("from Employee as p left join fetch p.minions").list())); assertEquals("Incorrect qry result count", 2, results.size()); itr = results.iterator(); while (itr.hasNext()) { // find john final Person p = (Person) itr.next(); if (p.getName().equals("John Doe")) { Employee john = (Employee) p; assertEquals("Incorrect fecthed minions count", 1, john.getMinions().size()); break; } } t.commit(); s.close(); }
private void prepareTestData(Session s) { Employee john = new Employee("John Doe"); john.setCompany("JBoss"); john.setDepartment("hr"); john.setTitle("hr guru"); john.setRegion("US"); Employee polli = new Employee("Polli Wog"); polli.setCompany("JBoss"); polli.setDepartment("hr"); polli.setTitle("hr novice"); polli.setRegion("US"); polli.setManager(john); john.getMinions().add(polli); Employee suzie = new Employee("Suzie Q"); suzie.setCompany("JBoss"); suzie.setDepartment("hr"); suzie.setTitle("hr novice"); suzie.setRegion("EMEA"); suzie.setManager(john); john.getMinions().add(suzie); Customer cust = new Customer("John Q Public"); cust.setCompany("Acme"); cust.setRegion("US"); cust.setContactOwner(john); Person ups = new Person("UPS guy"); ups.setCompany("UPS"); ups.setRegion("US"); s.save(john); s.save(cust); s.save(ups); s.flush(); }