criteria api - root.fetch()如何获取集合?

时间:2011-02-17 01:24:04

标签: criteria jpa-2.0 criteria-api

args'的方法类型fetch()可以是SingularAttribute,PluralAttribute,为什么不能成为ListAttribute?

然后,如何使用critria api获取集合?谢谢。

2 个答案:

答案 0 :(得分:3)

当然,正如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);

答案 1 :(得分:2)

ListAttribute扩展PluralAttribute,基于集合的任何属性也是如此。你真的尝试过使用root.fetch(ListAttribute)吗?