嵌入式的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版本中修复。

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