좋은 프로그램은 마음의 여유에서 나온다.

하이버네이트 join시 중복제거 본문

프로그래밍/기타

하이버네이트 join시 중복제거

좋은데이 2016. 5. 27. 22:21

many to many로 조인시


a테이블의 1번에 b테이블에 3개의 관계가 형성되어있으면


하이버네이트에서 Criteria로 select시 setMaxResults를 3으로 설정해놓으면


a테이블에서 1번 index를 가진 객체가 3개 나옴.


중복제거를 해야하는데, .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)를 설정하면


셀렉트 후 중복제거를 해서 1개만 남는다.


.setProjection(Projections.distinct(Projections.property("id"))) 을 이용하면 중복 제거는 되지만 id 컬럼만 select되어 컬럼들을 전부 추가해줘서 객체로 만들어야 함....

오랜 검색끝에 setFetchMode를 이용하면 되는 것을 찾음


http://stackoverflow.com/questions/11038234/pagination-with-hibernate-criteria-and-distinct-root-entity




Comments