我有一个关于 hibernate 的问题。

我有两个具有多对一关系的对象:

例如:
对象1:

 public class Person {

 @Basic
 @Column(length = 50)
 protected String name;

 @NotFound(action=NotFoundAction.IGNORE)
 @ManyToOne(fetch = FetchType.EAGER)
 @JoinColumn(name = "groupCode", referencedColumnName = "code", updatable=false)
 protected Group group;

 ...all the getters and setters...
 }

对象2:
 public class Group {
  @Id
  @Basic
  @Column(length = 3, nullable = false)
  protected String code;

  @Basic
  @Column(length = 30, nullable = false)
  protected String groupName;

   @Basic
   @Column(precision = 15, scale = 0)
   protected long exampleFieldId;

   ...rest of code....
  }

我试图使这个例子尽可能简单。我的问题是Person上的关联对象(组)可以为null。当前,当我加载特定的Person时,Hibernate会加载Group的实例并抛出异常,因为它无法将exampleFieldId设置为null(因为它是原始类型)。

我可以通过将long更改为Long来停止此错误,但是,我会认为Person上的Group对象应该为null,因此首先没有加载Group对象吗?

有谁知道Hibernate是否加载关联的对象而不管它是否允许为null,还是我错过了一些重要的注释?

谢谢

最佳答案

如Firo所述:



即使它在NHibernate中,这似乎也是您遇到的相同问题。值得检查!

Why does Hibernate attempt to load "not-found=ignore" associations?

编辑:可能是您缺少@Fetch(FetchMode.JOIN)

10-07 19:01
查看更多