2012-03-21 2 views
1

다른 속성들 중에서 목록 샘플 (List<Sample>)을 가진 클래스 Batch가 있습니다. 이 목록은 다 대일 관계 (Sample 1-> N Batch)를 통해 매핑됩니다. 각 샘플의 양과 함께 모든 배치를 가져올 수 있어야합니다. n + 1 개의 쿼리를 수행 할 필요없이 어떻게해야합니까?엔티티에 jpql을 쓰려면 어떻게해야합니까?

또한 개체에 어떻게 매핑합니까? 일괄 적으로

TypedQuery<Batch> query = entityManager.createQuery("select b from Batch b"Batch.class); 
List<Batch> batches = query.getResultList() 

답변

2

유형은 List<Sample> 인 속성을 가지며, 샘플의 배치 관계는 일대이다. 안에 List<Sample>@OneToMany 주석을 달고 샘플 안의 배치 속성에 @ManyToOne 주석을 달아야합니다.

n + 1 문제를 피하려면 fetch join을 사용하여 샘플 목록과 함께 Batch를 가져올 수 있습니다. hibernate가 Batch 및 Sample의 왼쪽 조인을 생성하여 반환 된 Batch 인스턴스가 샘플 목록을 갖도록합니다 완전히 초기화되었습니다.

SELECT batch FROM Batch batch join fetch batch.sampleList; 
관련 문제