似乎 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
}
}