jpa/hibernate:避免对每个关系都是唯一的实体中的所有连接表进行连接

dldeef67  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(337)

简单的例子。
表资源。表格行a。表行\u b。
联接表资源\u行\u a联接表资源\u行\u b
行a的资源无法附加到行b,反之亦然。
如果我想把2021年的所有资源都附加到第a行,我可以用原生sql编写

Select * from Resource r join Resource_Line_A rla on r.id = rla.resource_id join Line_A la on rla.line_a_id = la.id where la.year = 2021

在java中,对于repository,我已经使用了repository.findbyyear(2021),但是hibernate显示了这个查询

Select * from Resource r join Resource_Line_A rla on r.id = rla.resource_id join Line_A la on rla.line_a_id = la.id join Resource_Line_B rlb on r.id = rlb.resource_id join Line_B lb on rlb.line_b = lb.id where la.year = 2021

如何避免行表上的无用连接?所有关系都是fetchtype.lazy

pieyvz9o

pieyvz9o1#

我猜你用的是 @OneToOne(mappedBy = "..", fetch = LAZY) 为了 lineB ? 如果是这样的话,您必须知道Hibernate5.3有一个在5.4中修复的错误,这个错误导致这些关联被急切地获取。

相关问题