即使使用LAZY Fetch Strategy,也会填充子对象(Spring Data / Hibernate)

时间:2018-04-20 18:42:53

标签: spring hibernate spring-data

我不确定如何解释以下内容:我的表有一个指向同一个表中另一行的自引用指针,例如。

@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在幕后选择 - 是自动的吗?

1 个答案:

答案 0 :(得分:1)

你解释的是完全正常的。在您尝试访问惰性对象上的属性后,Hibernate将自动加载它。

请查看我的博客文章了解更多信息。

http://blog.arnoldgalovics.com/2017/02/27/lazyinitializationexception-demystified/