我记得在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;
}
因此,当id已经在hibernate项目代理对象中时,ticket.getProject.getId()会导致命中数据库以获取项目。注释将解决我记得的问题。
感谢, 迪安
答案 0 :(得分:12)
您需要告诉Hibernate使用属性访问而不是字段访问来访问ID:
@Id
@Access(AccessType.PROPERTY)
private Long id;
你真的不应该公开你的领域。