나는 다음과 같은 쿼리를 구현하기 위해 노력하고있어 : 최대 절전 모드 기준 API와Hibernate Criteria API로 조인 된 테이블에서 distinct table을 선택하는 방법?
SELECT DISTINCT C.* FROM A
join B on A.some_id = B.some_id
join C on B.some_id = C.some_id;
. C 테이블에 대한 고유 한 결과가 필요합니다. 일부 열만이 아닙니다.
나는 그렇게하려고 노력 :Criteria criteria = createCriteria(C.class, "ct")
.createCriteria("B", "bt")
.createCriteria("A", "at")
.//Some restrictions which are applied to all tables
그리고 그렇게 :
Criteria criteria = createCriteria(A.class, "at")
.createCriteria("B", "bt")
.createCriteria("C", "ct")
.//Some restrictions which are applied to all tables
(나는 비록 차이를 볼 수 없습니다). 광고의 ResultTransformer에 시도 :
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
다음 ProjectionsList에 모든 colums를 넣어 시도하고 :
criteria.setProjection(Projections.distinct(projectionList));
는하지만 투사은 전체 테이블에 목록의 첫 번째 열에에 "별개"키워드를 추가하지만. - 내가 무엇을 달성하고자하는
은 같은 것입니다 :
criteria.setProjection(Projections.distinct("C.*"));
하지만 난 단지 쿼리에서 같은 와일드 카드를 사용할 수 없습니다, 여기에 열을 추가 할 수 있습니다.
도움을 주시면 대단히 감사하겠습니다.
미안 해요, 난 제공된 코드에서 실수가 있었다, 나는 C 테이블에서 서로 다른 결과가 필요합니다. –
왜 다른 테이블에 가입하고 계십니까? 다른 테이블에 대한 참조 만 제거하면됩니다. –
모든 테이블에 일부 제한 사항을 적용해야하기 때문입니다. –