嵌入式的Hibernate懒加载领域
Hibernate lazy load field of embedded
我有以下结构:
@Entity
class Parent {
@Id
private String id;
@Embedded
private Child child;
}
@Embeddable
class Child {
@Column(...)
private int fieldA;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(...)
private A a;
}
而A
是普通的Javaclass。
class A {
...
}
我的问题是,从数据库加载父对象时,是否可以延迟加载子 class 的 a
字段?我尝试使用增强器插件,但仍然急切地获取该字段。
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<version>${hibernate.version}</version>
<executions>
<execution>
<configuration>
<failOnError>true</failOnError>
<enableLazyInitialization>true</enableLazyInitialization>
</configuration>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
延迟加载 Parent class 的子字段不是一个选项。我的目标是仅延迟加载 Child class 的 a
字段。欢迎任何建议
这似乎是休眠中的 issue。不幸的是它仍然是开放的,也许它会根据问题的评论部分在6.0版本中修复。
根据您的用例,您可以使用关系解决此问题,或者从可嵌入实体中移出需要延迟加载的字段。
我有以下结构:
@Entity
class Parent {
@Id
private String id;
@Embedded
private Child child;
}
@Embeddable
class Child {
@Column(...)
private int fieldA;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(...)
private A a;
}
而A
是普通的Javaclass。
class A {
...
}
我的问题是,从数据库加载父对象时,是否可以延迟加载子 class 的 a
字段?我尝试使用增强器插件,但仍然急切地获取该字段。
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<version>${hibernate.version}</version>
<executions>
<execution>
<configuration>
<failOnError>true</failOnError>
<enableLazyInitialization>true</enableLazyInitialization>
</configuration>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
延迟加载 Parent class 的子字段不是一个选项。我的目标是仅延迟加载 Child class 的 a
字段。欢迎任何建议
这似乎是休眠中的 issue。不幸的是它仍然是开放的,也许它会根据问题的评论部分在6.0版本中修复。
根据您的用例,您可以使用关系解决此问题,或者从可嵌入实体中移出需要延迟加载的字段。