【发布时间】:2012-02-06 03:09:13
【问题描述】:
我正在使用 JPA2 和它的 Criteria API 从数据库中选择我的实体。实现是 WebSphere Application Server 上的 OpenJPA。我所有的实体都是用 Fetchtype=Lazy 建模的。
我从数据库中选择了一个具有某些条件的实体,并希望一次从子表中加载所有嵌套数据。 如果我有一个数据模型,其中表 A 与表 B 连接为 oneToMany,我可以在条件查询中使用 Fetch 子句:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<A> cq = cb.createQuery(A.class);
Root<A> root = cq.from(A.class);
Fetch<A,B> fetch = root.fetch(A_.elementsOfB, JoinType.LEFT);
这很好用。我得到一个元素 A 并且它的所有 B 元素都正确填充。 现在表 B 与表 C 具有 oneToMany 关系,我也想加载它们。所以我将以下语句添加到我的查询中:
Fetch<B,C> fetch2 = fetch.fetch(B_.elementsOfC, JoinType.LEFT);
但这不会有任何作用。
有人知道如何在一个查询中获取多级实体吗?
【问题讨论】:
标签: jpa jpa-2.0 fetch criteria-api openjpa