简单的例子。
表资源。表格行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
1条答案
按热度按时间pieyvz9o1#
我猜你用的是
@OneToOne(mappedBy = "..", fetch = LAZY)
为了lineB
? 如果是这样的话,您必须知道Hibernate5.3有一个在5.4中修复的错误,这个错误导致这些关联被急切地获取。