8.2.4. HQL 공부하기 – inner join

insertDatas() 메소드에서 집어 넣는 데이타에서 Member와 Messenger의 모습을 보면 다음과 같습니다.

사용자 삽입 이미지

seal 멤버만 두개의 Messenger 정보를 가지고 있습니다. 이 때 inner join을 하면 다음과 같이 두개의 레코드가 생기게 됩니다.
사용자 삽입 이미지inner join을 HQL로 하는 방법은 s.create(“from Member m inner join m.messengers”) 이렇게 콜렉션을 가리키면 됩니다.



public void testJoinHQL(){


       insertDatas();


       q = s.createQuery(“from k_Member m inner join m.messengers”);


       List<Object> result = q.list();


       // Member m1 | Messenger msg1(“keesun”, MSN)


       // Member m1 | Messenger msg2(“keesun2”, Skype)


       assertEquals(2, result.size());


       Object[] result1 = (Object[]) result.get(0);


       assertTrue(result1[0] instanceof KMember);


       assertTrue(result1[1] instanceof KMessenger);


       KMessenger msg1 = (KMessenger) result1[1];


       assertEquals(“seal”, msg1.getM_id());


       assertEquals(KMessengerType.MSN, msg1.getM_type());


}