gpt4 book ai didi

java - 使用 hibernate 注释预先加载持久对象

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:58 25 4
gpt4 key购买 nike

我有三个对象:A、B 和 C。

A 与 B 具有一对多关系。

B 与 C 具有一对多关系。

类(class)如下:

public class A {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(...)
Set<B> getBSet();
}

public class B {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(...)
Set<C> getCSet();
}

当我使用 session.get(A.class, id) ( session 是一个 Hibernate 对象,并且我已经将 A 实例与一组 B 和一组 C 保存在数据库中)来获取具有提供的 id 的 A 类持久对象时,出现以下异常:

Apr 12, 2018 4:44:25 PM org.hibernate.event.internal.DefaultLoadEventListener onLoad
INFO: HHH000327: Error performing load command : org.hibernate.PropertyAccessException: Exception occurred inside setter of com.example.B.cSet

B 中的 setter 是:

public void setCSet(Set<C> cSet) {
this.cSet = cSet;
...
}

我以为我已经强制所有内容都急切加载,但不知何故它并没有按照我想要的方式工作。

有什么想法发生了什么以及我应该如何解决它吗?

感谢您的宝贵时间。

最佳答案

尝试将所有注释移至字段而不是注释方法。看起来注释方法而不是字段会破坏急切加载。看看这个问题,看起来和你的很相似:What cause org.hibernate.PropertyAccessException: Exception occurred inside setter

关于java - 使用 hibernate 注释预先加载持久对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49805717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com