2010-01-27 5 views
3

jboss의 문서에서이 예제를 발견했습니다.hql의 새로운 키워드는 어떻게 작동합니까?

select new Family(mother, mate, offspr) 
from DomesticCat as mother 
    join mother.mate as mate 
    left join mother.kittens as offspr 

Family 클래스의 출처는 어디입니까? 어딘가로 가져 오거나 정규화 된 클래스 이름을 사용해야합니까?

답변

3

Family은 선언 또는 정규화가 필요한 적절한 생성자가있는 일반 POJO입니다.

+0

어디에서? 방법? – flybywire

+0

@flybywire 엔티티 (annotated 또는 mapped) –

1

가져 오기는 다른 이유로 발견되면 선택 사항입니다. :-)

예, 존재해야합니다. 엔티티가 아닌 클래스이며, 세 개의 열을 알기 쉽게 처리 할 수 ​​있도록 만듭니다. 호출에 적합한 생성자가 필요합니다. 당신이 한 경우처럼

기본적으로, 그것이 :

  • 목록에 (세 개의 열이)
  • 루프를 목록을 반환하는 쿼리, 열을 들고 가족 객체를 생성하고, 목록을 반환 이 결과 중
+0

가져 오기가 선택적이고 클래스가 엔티티가 아닌 경우, Hibernate는 그것을 어떻게 찾을 것입니까? 어떤 패키지에서 찾을 것인가? – flybywire

+0

@Flybywire 사실, 그것은 어떤 식 으로든 발견되어야합니다 :-). Hibernate에 대한 디폴트 패키지에 있거나, 임포트 된 경우 엔티티로 선언되면 발견됩니다. 엔티티가 항상 첫 번째 경우에 해당된다는 사실이 확실하기 때문에 필자는 대답에서 명확하지 않았습니다. :-) – KLE

2

Family은 적절한 생성자가있는 Java 객체 여야합니다. 객체가 노멀 매핑 된 엔티티 (주석을 사용하거나 하이버 네이트 매핑 XML에서 사용하는 경우)는 가져 오기가 선택적입니다.

관련 문제