@Test public void storeLoad() throws Exception { UserTransaction tx = TM.getUserTransaction(); try { tx.begin(); EntityManager em = JPA.createEntityManager(); Long DEPARTMENT_ID; { Department department = new Department("Sales"); em.persist(department); UserId id = new UserId("johndoe", null); // Null? User user = new User(id); user.setDepartment(department); // Required! em.persist(user); DEPARTMENT_ID = department.getId(); } tx.commit(); em.close(); tx.begin(); em = JPA.createEntityManager(); { UserId id = new UserId("johndoe", DEPARTMENT_ID); User user = em.find(User.class, id); assertEquals(user.getDepartment().getName(), "Sales"); } tx.commit(); em.close(); } finally { TM.rollback(); } }