9
如何使JPA OneToOne关系变得懒惰
在我们正在开发的此应用程序中,我们注意到一个视图特别慢。我剖析了该视图,并注意到,即使数据库中只有两个对象要获取,hibernate也执行了一个查询,该查询花费了10秒。所有OneToMany和ManyToMany关系都是懒惰的,所以这不是问题。在检查实际执行的SQL时,我注意到查询中有80多个联接。 在进一步检查该问题时,我注意到该问题是由实体类的深入层次结构OneToOne和ManyToOne实体类之间的关系引起的。所以,我想,我只是让他们懒惰,那应该可以解决问题。但是注释@OneToOne(fetch=FetchType.LAZY)或@ManyToOne(fetch=FetchType.LAZY)似乎不起作用。我得到一个例外,或者然后它们实际上没有被代理对象替换,因此变得很懒。 有什么想法可以让我工作吗?请注意,我不使用persistence.xml定义关系或配置详细信息,所有操作均以Java代码完成。