【发布时间】:2013-07-18 04:04:02
【问题描述】:
我正在使用 JPA 和 Hibernate 3.6。我正在尝试从数据库中批量获取结果,从而减少休眠中的选择次数。在我的 A 类中有一个 B 类对象的列表。我指定了fetchMode,只有一个Select用来获取B的所有对象。
public class A {
@OneToMany(mappedBy="objectA", cascade=CascadeType.ALL)
@Fetch(FetchMode.SUBSELECT)
List<B> listB = new ArrayList<B>();
}
public class C {
int varC;
}
我希望所有实例 C 也可以批量返回,一个 select 语句来获取所有实例。我正在使用以下 TypedQuery 来获取 C 对象的列表。如何做呢 ?感谢您的帮助。
List<C> listC = em.createQuery("FROM C", C.class).getResultList();
为了更清楚,我有以下 C 类。
public class C {
int varC;
}
我想获取 C 的所有对象,“Select * from tableC”。但是当我使用 typedQuery 时,它会触发 n 个选择查询来获取 C 的 n 个对象。我如何确保它通过一个 select 语句获取所有元素。我只是举了一个 A 类和 B 类的例子来展示在其他场景中我可以通过一个 select 语句获取 B 的所有元素。
【问题讨论】:
-
当你说“当我使用 typedQuery”时,它指的是
createQuery("FROM C", C.class)?它会通过唯一ID生成多个select的sql吗?那你能把那个hql生成的sql贴出来吗? -
是的,它指的是createQuery。稍后我会发布 select 语句。
标签: hibernate jpa fetch jpql subquery