2010-01-22 5 views
1

는 다음과 같은 세 가지 하이버 네이트 엔티티를 고려? 특히 휠을 가져올 때 차바퀴가 인출되도록 subselect에 참여하고 싶습니다. 물론 FetchType을 EAGER로 변경하면이 작업을 수행 할 수 있지만 쿼리 기반 쿼리가 필요합니다.제어 Hibernate의 생성 부속

현재 코드는 Hubcaps를 가져 오기 위해 다른 select를 생성해야합니다.

답변

0

연구의 많은 후에이 적어도 최대 절전 모드를 확장하지 않고,이 단계에서 불가능하다는 것을 나타납니다.

0

예 당신이 기준을 사용하지만, 단지 그러나 나는 HQL 오히려 기준을 사용하는 것이 좋습니다 것, 기준에 조인 찾는 방법은 완료 기억이 안 할 수는 훨씬 더 읽을 수 :

select c 
from Car c join fetch c.wheels 
where ... 
+0

필자는 기준으로이를 수행해야하는 올바른 이유가 있습니다. 필자는 절대적으로 필요한 경우가 아니라면 지금 당장은 그럴 수 없습니다. 또한, Hibernate.initialize (car.getWheels())를 호출 할 때 HQL 솔루션을 사용하면 "자동"으로 적용되지 않습니다. – Zecrates

+0

HQL에서 "join fetch"를 사용하면 wheel colletion을 열심히로드 할 것이므로 Hibernate.initialize()를 호출 할 필요가 없습니다. view_sql 플래그를 활성화하고, 생성 된 쿼리의 차이점을 확인하십시오. part ** join f.wheels ** –

+0

문제점 실제 엔티티에서로드해야하는 OneToMany 관계가 여러 개이기 때문에 Cartesian 조인을 피하기 위해 subselect를 사용해야합니다. – Zecrates