2009년 1월 13일 화요일

테이블 죠인을 안한 상태에서 Projection을 세팅할때

Criteria를 사용할때 제목에 명시한 경우라면 아래 글이 조금이나마 도움이 될것입니다.

Criteria를 이용하여 projection을 설정하면 쿼리를 사용하는것보담은 보다 더 유연하게 원하는 필드의 데이타를 Fetch해올 수 가 있습니다.

하지만 보통은 여러테이블내의 데이타를 죠인하여 가져오는 경우에 대하여 테이블 죠인시 매 테이블 마다 개개의 별칭을 달아줍니다. 저 또한 이런 식으로 많이 코딩을 해왔었습니다.

하지만 DAO를 리펙터링 하는 도중 이상한 문제에 봉착했었습니다.
분명히 테이블 선언시 "a" 라는 별칭을 부여하였었는데 a.property 이런식으로 원하는 속성을 fetch하려니 존재하지 않는 속성이라는 에러가 자꾸 뜨지 뭡니까?

디버깅을 열심히 하는 도중 hibernate이 내부적으로 싱글테이블인 경우 자동으로 a라는 별칭을 무시하고 this라는 포인터를 통하여 POJO의 각 속성들을 접근할 수 있게끔 처리를 하고 있음을 알게 되었습니다.

이것땜에 삽질 반시간 정도는 했네요... ㅜㅜ

댓글 없음:

댓글 쓰기