使用单表继承时,防止对 JPA 中子类的集合进行 N+1 查询



我在JPA的Postgres中使用了单表继承策略。我的一些子类有自己的集合字段,目前当我对父类执行 get 时,它会获取所有行,然后对于需要获取集合的每一行,它会执行单独的查询。

如何告诉 JPA 只对子集合执行单个联接查询,这样我就不会遇到 N+1 查询问题?如果这是一个单一的类,我可以自己编写一个 JPA 查询并对子集合进行联接,但由于我只对父类进行获取,因此我无法编写查询来联接子集合。

从 JPA 2.1 开始解决 N+1 问题,您可以使用实体图和子图,其中实体图是描述查询的一种方式。这里也用编码很好地解释了它。

此外,还有其他方法可以解决N + 1问题,但是,与其他解决方案相比,实体图的优点太多了。

最新更新