【问题标题】:FetchMode in JPA 2 CriteriaQueryJPA 2 CriteriaQuery 中的 FetchMode
【发布时间】:2010-12-08 14:20:56
【问题描述】:

我目前正在从 Hibernate 切换到纯 JPA 2(顺便说一下,这比我最初预期的要耗时得多)。
到目前为止,我遇到的最大问题是找到一种强制加载惰性属性的方法。
在 Hibernate 中,这是使用:criteria.setFetchMode("person", FetchMode.JOIN);.
JPA 2 有没有办法做到这一点?

【问题讨论】:

    标签: jpa-2.0


    【解决方案1】:

    试试这个:

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

    假设您的 Person 实体和 Address 实体之间存在一对一的关系。

    【讨论】:

    • 另外,如果你想检索层次元素(根特例),你应该使用这样的左连接。 CriteriaQuery&lt;JerarquiaOrganizacional&gt; criteria = cb.createQuery(JerarquiaOrganizacional.class); Root&lt;JerarquiaOrganizacional&gt; jerarquiaOrg = criteria.from(JerarquiaOrganizacional.class); jerarquiaOrg.fetch("jerarquiaOrganizacional", JoinType.LEFT);
    猜你喜欢
    • 2011-06-12
    • 2011-04-12
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2015-12-17
    • 2012-02-21
    • 2015-11-13
    相关资源
    最近更新 更多