/** * This test will demonstrate using a compound foreign key in a many-to-one, uni-directional * relationship. */ @Test public void testManyToOneUniCompoundFK() { log.info("*** testManyToOneUniCompoundFK ***"); House house = new House(new HousePK(1600, "PA Ave"), "White House"); Occupant occupant = new Occupant("bo", house); log.debug("persisting parent"); em.persist(house); log.debug("persisting child"); em.persist(occupant); em.flush(); log.debug("getting new instances"); em.clear(); Occupant occupant2 = em.find(Occupant.class, occupant.getId()); log.debug("checking child"); assertEquals("unexpected child data", occupant.getName(), occupant2.getName()); log.debug("checking parent"); assertEquals("unexpected parent data", house.getName(), occupant2.getResidence().getName()); log.debug("add more child entities"); Occupant occupantB = new Occupant("miss beazily", occupant2.getResidence()); em.persist(occupantB); em.flush(); log.debug("getting new instances of children"); em.clear(); List<Occupant> occupants = em.createQuery( "select o from Occupant o " + "where o.residence.id=:houseId", Occupant.class) .setParameter("houseId", occupant.getResidence().getId()) .getResultList(); assertEquals("unexpected number of children", 2, occupants.size()); }