OneToMany
和ManyToMany
关系都是惰性的,所以那不是问题所在。当检查实际执行的SQL时,我发现查询语句中有80多个连接。进一步调查后,我发现问题是由实体类之间深层次的
OneToOne
和ManyToOne
关系引起的。因此,我想,我只需要使它们懒加载,就可以解决问题了。但是,无论是注释@OneToOne(fetch=FetchType.LAZY)
还是@ManyToOne(fetch=FetchType.LAZY)
都似乎不起作用。要么我会得到一个异常,要么它们实际上没有被替换为代理对象,从而变成了非懒加载。有什么好的想法可以让我解决这个问题吗?请注意,我不使用
persistence.xml
来定义关系或配置细节,一切都是在Java代码中完成的。
select other_entity.id from other_entity where id = other_entity.id
的公式进行one-to-one
映射。当然,这对查询性能来说并不理想。 - Frédéric