public void setup() { super.setup(); // Fully load the cache and fire indirection. allObjects = getSession().readAllObjects(Employee.class); for (Iterator iterator = allObjects.iterator(); iterator.hasNext(); ) { Employee employee = (Employee) iterator.next(); employee.getAddress(); employee.getPhoneNumbers().size(); } }
public boolean equals(Object o) { Employee e = (Employee) o; Map<String, PhoneNumber> map = e.getPhoneNumbers(); if (map.size() != phones.size()) return false; Collection<Map.Entry<String, PhoneNumber>> entries = (Collection<Map.Entry<String, PhoneNumber>>) phones.entrySet(); for (Map.Entry<String, PhoneNumber> entry : entries) { String key = entry.getKey(); PhoneNumber p = entry.getValue(); PhoneNumber p0 = map.get(key); if (p.getNumber() != p0.getNumber()) return false; } return true; }
public void setup() { Employee emp = (Employee) getSomeEmployees().firstElement(); PhoneNumber phone = (PhoneNumber) emp.getPhoneNumbers().firstElement(); String areaCode = phone.getAreaCode(); String firstName = emp.getFirstName(); setReferenceClass(Employee.class); ExpressionBuilder employeeBuilder = new ExpressionBuilder(); Expression phones = employeeBuilder.anyOf("phoneNumbers"); Expression whereClause = phones .get("owner") .get("firstName") .equal(firstName) .and(phones.get("areaCode").equal(areaCode)); ReportQuery rq = new ReportQuery(); rq.setSelectionCriteria(whereClause); rq.addAttribute("number", phones.get("number")); rq.setReferenceClass(Employee.class); setOriginalOject(getAttributeFromAll("number", (Vector) getSession().executeQuery(rq))); getSession().getIdentityMapAccessor().initializeAllIdentityMaps(); String ejbqlString; ejbqlString = "SELECT phone.number FROM Employee employee, IN(employee.phoneNumbers) phone " + "WHERE phone.owner.firstName = \"" + firstName + "\" AND phone.areaCode = \"" + areaCode + "\""; useReportQuery(); setEjbqlString(ejbqlString); super.setup(); }