2010-12-08 51 views
12

我目前在从休眠切换过程以纯JPA 2(其中的方式被证明是更耗时比我最初的预期)。
到目前为止,我遇到的最大问题是找到一种方法来迫使加载惰性属性。
使用休眠时,使用:criteria.setFetchMode("person", FetchMode.JOIN);
有没有办法用JPA 2做到这一点?FetchMode在JPA 2 CriteriaQuery中

回答

15

试试这个:

CriteriaQuery<Person> c = cb.createQuery(Person.class); 
Root<Person> person = c.from(Person.class); 
person.fetch("address"); 
c.select(person); 

假设有你的Person实体和Address实体之间的一个一对一的关系。

+1

此外,如果你想检索层次结构件(根特殊情况),你应该使用左连接这样。 `CriteriaQuery criteria = cb.createQuery(JerarquiaOrganizacional.class); 根 jerarquiaOrg = criteria.from(JerarquiaOrganizacional.class); “jerarquiaOrganizacional”,JoinType.LEFT);` – dennisbot 2016-01-28 19:18:37