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());
}