2

似乎 Hibernate 忽略了 javax.persistence.fetchgraph 中指定的任何 @Basic 字段并始终加载整个对象,直到我们将该字段明确定义为 @Basic(fecth=LAZY)。但是 JPA 2.1 标准说:

要指定获取图,请在执行 EntityManager.find 或查询操作时设置 javax.persistence.fetchgraph 属性。获取图仅包含在 EntityGraph 实例中明确指定的字段,并忽略默认的实体图设置

问题是我不想将所有字段默认设置为延迟加载,因为在某些特定情况下我只需要部分对象来获取 UI 的大量数据。当我可以动态指定要加载的内容时,是否有任何解决方法?

EclipseLink 按预期使用 fetchgraph。

PS Hibernate 5.3.1.Final,使用 hibernate-gradle-plugin:5.3.1.Final 进行的字节码增强:

hibernate {
    enhance {
        enableLazyInitialization= true
        enableDirtyTracking = true
        enableAssociationManagement = true
        enableExtendedEnhancement = false
    }
}
4

1 回答 1

0

这似乎是 Hibernate 的错误:https ://hibernate.atlassian.net/browse/HHH-8776

于 2018-06-18T12:24:38.020 回答