@Test @Skip(server = true) public void testNestedQuery() { JPAEnvironment env = getEnvironment(); EntityManager em = env.getEntityManager(); try { Address address = new Address(); address.setCounty(ORANGE); address.setState(CA); address.setStreet(FELDWEG); address.setZipcode(ZIP); ContactInfo contactInfo = new ContactInfo(); contactInfo.setSalutation(SALUTATION); contactInfo.setAddress(address); Employee employee = new Employee(); employee.setSsn(6789); employee.setName(FRITZ); employee.setContactinfo(contactInfo); env.beginTransaction(em); em.persist(employee); env.commitTransactionAndClear(em); Query query = em.createQuery( "select e.name from Employee2 e where e.contactinfo.address.street = :street"); query.setParameter("street", FELDWEG); @SuppressWarnings("unchecked") List<String> names = query.getResultList(); assertEquals(1, names.size()); assertEquals(FRITZ, names.get(0)); } finally { closeEntityManager(em); } }
@Test @Skip(server = true) public void testNestedOuterNull() { JPAEnvironment env = getEnvironment(); EntityManager em = env.getEntityManager(); try { Employee employee = new Employee(); employee.setSsn(2345); employee.setName("Peter"); env.beginTransaction(em); em.persist(employee); env.commitTransactionAndClear(em); Employee employee2 = em.find(Employee.class, 2345); assertNotNull(employee2); ContactInfo contactinfo = employee2.getContactinfo(); if (contactinfo != null) { assertNull(contactinfo.getSalutation()); Address address = contactinfo.getAddress(); if (address != null) { assertNull(address.getCounty()); assertNull(address.getState()); assertNull(address.getZipcode()); assertNull(address.getStreet()); } } } finally { closeEntityManager(em); } }
@Test @Skip(server = true) public void testNested() { JPAEnvironment env = getEnvironment(); EntityManager em = env.getEntityManager(); try { Address address = new Address(); address.setCounty(ORANGE); address.setState(CA); address.setStreet(SUNSET_BVLD); address.setZipcode(ZIP); ContactInfo contactInfo = new ContactInfo(); contactInfo.setSalutation(SALUTATION); contactInfo.setAddress(address); Employee employee = new Employee(); employee.setSsn(5678); employee.setName("Hans"); employee.setContactinfo(contactInfo); env.beginTransaction(em); em.persist(employee); env.commitTransactionAndClear(em); env.beginTransaction(em); Employee employee2 = em.find(Employee.class, 5678); assertNotNull(employee2); ContactInfo contactInfo2 = employee2.getContactinfo(); assertNotNull(contactInfo2); assertEquals(SALUTATION, contactInfo2.getSalutation()); Address address2 = contactInfo2.getAddress(); assertNotNull(address2); Assert.assertEquals(ORANGE, address.getCounty()); Assert.assertEquals(CA, address.getState()); Assert.assertEquals(ZIP, address.getZipcode()); Assert.assertEquals(SUNSET_BVLD, address.getStreet()); address2.setStreet(HOPP); env.commitTransactionAndClear(em); Employee employee3 = em.find(Employee.class, 5678); assertNotNull(employee3); ContactInfo contactInfo3 = employee3.getContactinfo(); assertNotNull(contactInfo3); Address address3 = contactInfo3.getAddress(); assertNotNull(address3); assertEquals(HOPP, address3.getStreet()); } finally { closeEntityManager(em); } }