2010-12-08 76 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