我不确定如何解释以下内容:我的表有一个指向同一个表中另一行的自引用指针,例如。
@Entity
@Table(name = "questions_t", schema = "public")
public class QuestionsT implements java.io.Serializable {
private QuestionsT relatedQuestion;
//...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "related_question_id")
public QuestionsT getRelatedQuestion() {
return relatedQuestion;
}
}
获取策略为FetchType.LAZY 。
但是,在我的应用程序中获取初始问题列表之后,如果我这样做了
question.getRelatedQuestion().getSomeProperty()
相关问题的属性回复正确并填写完整。这不是我对LAZY的预期。我预计原始的Question对象的Parent Question会有一个最小的填充体(可能只有ID),但是有关相关问题(子对象)的任何进一步信息都需要额外的手动提取。
我看到当我执行get属性时,Hibernate做了1在幕后选择 - 是自动的吗?
答案 0 :(得分:1)
你解释的是完全正常的。在您尝试访问惰性对象上的属性后,Hibernate将自动加载它。
请查看我的博客文章了解更多信息。
http://blog.arnoldgalovics.com/2017/02/27/lazyinitializationexception-demystified/