Hibernate Postload 和引用实体上的 null 字段

发布于 2024-11-28 21:02:34 字数 506 浏览 2 评论 0原文

我有两个实体,如下所示:

@Entity
public class Project {
   @Id
   private id;
   private String name;

   ...
}

@Entity
public class Person {
   @Id
   private id;
   private String name;

   @ManyToOne
   private Project project;

   @PostLoad
   void onLoad(){
      if (project.getName() == null){
         //It's always null!!!
      }
   }


   ...
}

正如代码所示,在 onLoad 时,相关实体的字段始终为 null - 事实上,相关实体的所有字段都是 null -。我需要 Hibernate 在调用 onLoad 之前获取该字段。

有什么想法吗?

谢谢。

I have two entities like the ones below:

@Entity
public class Project {
   @Id
   private id;
   private String name;

   ...
}

@Entity
public class Person {
   @Id
   private id;
   private String name;

   @ManyToOne
   private Project project;

   @PostLoad
   void onLoad(){
      if (project.getName() == null){
         //It's always null!!!
      }
   }


   ...
}

As the code says, on onLoad the field of the related entity is always null -in fact, all field of related entity are null-. I need Hibernate to fetch the field before calling onLoad.

Any idea?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜宝宝 2024-12-05 21:02:34

您必须设置一个获取策略,它可能是:

FetchType.LAZY

或者

FetchType.EAGER

您还应该使用外部 ID 定义连接列。

在你的代码中:

...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "project_id")
private Project project;

You must set a Fetch strategy it might be:

FetchType.LAZY

or

FetchType.EAGER

You should define also the join column with the foreign ID.

In your code:

...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "project_id")
private Project project;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文