hibernate getId正在加载对象,即使它是惰性的

Dea*_*ler 7 hibernate

我记得在JPA或hibernate中都有一个注释来告诉hibernate使用getId/setId方法而不是属性(我们注释我们的属性).如果没有这个设置,getId会导致命中数据库并填充该对象的所有字段,这不是我想要的.有谁知道那个注释是什么?

例:

public void Project {
  @Id
  //Other annotation forcing hibernate to use property get/settter
  public Long id;
}

public Ticket {
  @ManyToOne(lazy=true)
  public Project project;
}
Run Code Online (Sandbox Code Playgroud)

因此,当id已经在hibernate项目代理对象中时,ticket.getProject.getId()导致命中数据库以获取项目.注释将解决我记得的问题.

谢谢,迪恩

JB *_*zet 12

您需要告诉Hibernate使用属性访问而不是字段访问来访问ID:

@Id
@Access(AccessType.PROPERTY)
private Long id;
Run Code Online (Sandbox Code Playgroud)

你真的不应该公开你的领域.