当前位置: 首页 > 知识库问答 >
问题:

即使使用惰性获取策略,也会填充子对象(Spring Data/Hibernate)

东方琪
2023-03-14
@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;
     }
 }
question.getRelatedQuestion().getSomeProperty()

共有1个答案

钱展
2023-03-14

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

请看一下我的博客文章,了解更多信息。

https://arnoldgalovics.com/lazyinitializationexception-demystified/

 类似资料:
  • 我的理解是,默认情况下,Hibernate将所有关系类型的FetchType设置为lazy。 在我的例子中,我有一个双向的OneToMany-ManyToOne关系,如下所示: 另一个问题是我如何得到一个有特定名字的孩子?是否可以通过存储库进行操作?还是需要getChildren(parentId)并迭代直到找到以特定方式命名的那个? 编辑:在一些建议之后,我继续这样实现了我的ChildRepos

  • 问题内容: 我正在尝试从一个简单的JSON文件填充一个集合,这是学习骨干.js的一部分。但是我无法使它工作。 进行了AJAX调用(已通过FireBug验证),但是该方法返回 。 我究竟做错了什么? 这是我的JSON: 问题答案: 是异步的,如果立即调用,则不会填充您的集合。要解决此问题,您只需将集合 重置 事件(Backbone的 同步 事件> = 1.0)绑定到视图render: 请注意bind

  • 问题内容: 我使用Hibernate 5.2.5(如果重要的话,也可以使用kotlin和spring 4.3.5),并且我希望延迟加载类的某些字段。但是问题是所有字段都立即加载,我没有任何特殊的Hibernate设置,也没有使用Hibernate.initialize()。 这就是我的查询方式 TaskRepoImpl: TaskService: 并输出: 请告知我的代码出了什么问题以及如何使Hi

  • 问题内容: 我使用Json.Net这样填充一个类: 上面的结果JSON字符串填充了我的类中的几个属性。稍后我有一个新的JSON字符串,并希望使用其余属性填充相同的类。是否可以使用JSON.NET或方法?我基本上想在上面的代码行中添加/添加到我填充的帐户对象中。 我的课: 问题答案: 是的,您可以使用第二个JSON字符串来填充现有对象的属性。 这是一个例子: 输出: 小提琴:https : //do

  • 我对Android Studio和Android编程都很陌生。我刚刚读了关于第一个common Intent教程的内容,它是关于。我试着编写一个简单的代码来测试这个意图,但是抛出的无效,堆栈跟踪如下所示: 05-20 15:36:25.010 2342-2342/com。维法隆。helloandroid E/AndroidRuntime:致命异常:主进程:com。维法隆。helloandroid,

  • 问题内容: 我记得在JPA或hibernate中有一个注释,告诉hibernate使用getId / setId方法而不是property(我们注释属性)。如果没有此设置,则getId会导致命中数据库并填充该对象的所有字段,这不是我想要的。有人知道该注释是什么吗? 例: 因此,当id已在hibernate项目代理对象中时,ticket.getProject.getId()导致命中数据库以获取项目。