fetch() 메소드의 args 유형은 SingularAttribute, PluralAttribute 일 수 있습니다. 왜 ListAttribute가 될 수 없습니까?criteria api - root.fectch() 콜렉션을 가져 오는 방법은 무엇입니까?
그렇다면 critria API를 사용하여 컬렉션을 가져 오는 방법은 무엇입니까? 고맙습니다.
fetch() 메소드의 args 유형은 SingularAttribute, PluralAttribute 일 수 있습니다. 왜 ListAttribute가 될 수 없습니까?criteria api - root.fectch() 콜렉션을 가져 오는 방법은 무엇입니까?
그렇다면 critria API를 사용하여 컬렉션을 가져 오는 방법은 무엇입니까? 고맙습니다.
물론 Rasmus Franke가 말한 것처럼 그렇게 할 수 있습니다. 그냥 javadocs for FetchParent 에서 확인하거나이 시도 :
@Entity
public class SomeEntity {
@Id int id;
@OneToMany List<OtherEntity> others;
}
@Entity
public class OtherEntity {
@Id int id;
}
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<SomeEntity> cq = cb.createQuery(SomeEntity.class);
Root<SomeEntity> root = cq.from(SomeEntity.class);
ListAttribute<? super SomeEntity, OtherEntity> listAttribute = root.getModel().getList("others", OtherEntity.class);
root.fetch(listAttribute, JoinType.LEFT);
cq.select(root);
ListAttribute는 컬렉션을 기반으로하는 모든 속성과 마찬가지로 PluralAttribute를 확장합니다. 실제로 root.fetch (ListAttribute)를 사용하려고 했습니까?
를 잘 할 수 있다고. 나는 쿼리를위한 기준 API를 오랫동안 작성하지 않았다. 현재 저는 항상 JPQL을 사용합니다. 고맙습니다. –