2012-01-04 3 views
51

에 가입 :최대 절전 모드 기준은 다음 얻을 나는 최대 절전 모드 기준을 찾고 3 표

Dokument.class 이 Role.class

역할 ID 역할 에 매핑 된 ContactPerson contactId의

있다

Contact.class FIRSTNAME 성

내가 먼저 나 라를 검색 할 stName을 연결하고 연결된 Dokuments 목록을 검색합니다.

나는 이런 식으로 뭔가를 시도 :

내가 클래스 "Dokument"는이 Dokument과하지에 대한 검색을 가입하는 이유

누군가가 설명 할 수 부동산 "성"을 확인할 수 없습니다 오류가 발생

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

모든 조인 된 테이블? 모든 도움을 미리 감사드립니다!

답변

103

가져 오기 모드는 연결을 가져와야한다고 말합니다. 연관된 엔티티에 제한을 추가하려면 별칭 또는 하위 규정을 만들어야합니다. 나는 일반적으로 별칭을 사용하여 선호하지만, 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 reference manual에서 설명하고 javadoc for Criteria도 예제가 있습니다. 설명서를 읽으십시오. 유용한 정보가 풍부합니다.

+3

JB 감사합니다. 예, 스펙을 읽었습니다. 그러나 Hibernate newbee의 경우, 모든 Hibernate 용어에 대해 머리를 감싸기가 아주 어렵습니다. 다시 한번 감사드립니다 :-) – mahatmanich

+0

btw 협회 란 무엇인가요? – mahatmanich

+0

연관은 하나의 엔티티가 OneToOne, OneToMany, ManyToOne 또는 ManyToMany ... 연관을 사용하여 다른 엔티티에 연결될 때입니다. –