0

我有两个类,AB具有一对多的关系。

@Entity
public class A {
   //some code
   @OneToMany(fetch = FetchType.LAZY, mappedBy = "abc")
   private List<B> b;
}

我有一个A的 JPA 存储库,我观察到当我使用存储库方法从数据库中获取A时,不包括B 。当我想访问B时,会执行额外的 SELECT 查询来获取关联的B(如果有 100 个关联的B,则执行 100 个额外的查询)。使 FetchType.EAGER 仅在执行这些附加 SELECT 查询时更改。即它们在主 SELECT 查询之后被调用。无论哪种方式,都会执行额外的 SELECT 查询来获取关联的类。

这是自然行为吗?我发现JPA Entity Graphs是这个问题的解决方案/使用单个 SELECT 查询获取AB 。有没有其他方法可以解决这个问题?问题@EntityGraph是它必须分别用每个存储库方法进行注释。另外,有没有办法注释@EntityGraph一次,所以它会影响存储库中的所有方法?

我正在使用 Spring Boot 2.5.1。提前致谢!

4

0 回答 0