development

3 개의 테이블로 최대 절전 조건 조인

big-blog 2020. 12. 4. 19:44
반응형

3 개의 테이블로 최대 절전 조건 조인


다음을 얻기 위해 최대 절전 모드 기준을 찾고 있습니다.

Dokument.class는 Role roleId에 매핑됩니다.

Role.class에는 ContactPerson contactId가 있습니다.

Contact.class FirstName LastName

Contact 클래스에서 First 또는 LastName을 검색하고 연결된 문서 목록을 검색하고 싶습니다.

나는 다음과 같은 것을 시도했다.

session.createCriteria(Dokument.class)
.setFetchMode("role",FetchMode.JOIN)
.setFetchMode("contact",FetchMode.JOIN)
.add(Restrictions.eq("LastName","Test")).list();

"Dokument"클래스에 대한 "LastName"속성을 확인할 수 없다는 오류가 발생합니다.

누군가 조인이 모든 조인 테이블이 아닌 Dokument에서 검색하는 이유를 설명 할 수 있습니까? 모든 도움에 미리 감사드립니다!


가져 오기 모드는 연결을 가져와야한다고 만 말합니다. 연결된 엔터티에 대한 제한을 추가하려면 별칭 또는 하위 조건을 만들어야합니다. 나는 일반적으로 별칭 사용을 선호하지만 YMMV :

Criteria c = session.createCriteria(Dokument.class, "dokument");
c.createAlias("dokument.role", "role"); // inner join by default
c.createAlias("role.contact", "contact");
c.add(Restrictions.eq("contact.lastName", "Test"));
return c.list();

이것은 물론 Hibernate 참조 매뉴얼 에 잘 설명되어 있으며 Criteria에 대한 javadoc 에는 예제가 있습니다. 문서를 읽으십시오. 유용한 정보가 많이 있습니다.

참고 URL : https://stackoverflow.com/questions/8726396/hibernate-criteria-join-with-3-tables

반응형