首页 > 解决方案 > 嵌入式的休眠延迟加载字段

问题描述

我有以下结构:

@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是一个普通的 Java 类。

class A {
 ...
}

我的问题是,在从数据库加载父对象时,是否可以延迟加载aChild 类的字段?我尝试使用增强器插件,但仍然急切地获取该字段。

           <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>

延迟加载父类的子字段不是一种选择。我的目标是只延迟加载aChild 类的字段。欢迎任何建议

标签: javahibernatelazy-loadingembeddable

解决方案


这似乎是休眠中的一个问题。不幸的是,它仍然处于打开状态,根据问题的评论部分,它可能会在 6.0 版本中修复。

根据您的用例,您可以使用关系解决此问题,或者从可嵌入实体中移出需要延迟加载的字段。


推荐阅读