我有三个对象:A,B和C.
A与B有一对多的关系。
B与C有一对多的关系。
课程如下:
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)时(会话是一个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中的二传手是:
public void setCSet(Set<C> cSet) {
this.cSet = cSet;
...
}
我以为我已经迫使所有东西都被迫加载,但不知怎的,它并没有像我想要的那样工作。
任何想法发生了什么,我该如何解决?
感谢您的时间。
答案 0 :(得分:0)
尝试将所有注释移动到字段而不是注释方法。看起来注释方法而不是字段会破坏急切的加载。看看这个问题,看起来与你的问题类似:What cause org.hibernate.PropertyAccessException: Exception occurred inside setter