JPA 解决n+1次查询问题

时间:2024-04-01 13:44:47

分两步操作:
1、主表实体类中,添加注解@NamedEntityGraph
JPA 解决n+1次查询问题
如上,设置name值,并指定attributeNodes(看名字就知道可以指定多个),每个node的值如下图红框:
JPA 解决n+1次查询问题
2、在主表的DAO方法中 重写用到的查询方法,service层中调用什么方法就重写什么方法,我这边用到的是:
Page<ContractInfo> findAll( Specification<ContractInfo> var1, Pageable var2);
并添加注解@EntityGraph
JPA 解决n+1次查询问题
最终进行测试,发现只执行了一次查询,sql打印确定是left outer join实现
JPA 解决n+1次查询问题
仔细看,单向一对多的情况,用的是set,双向关联时用的是List,因为我单向一对多用List会报错
cannot simultaneously fetch multiple bags,所以改set了,具体没深入研究。

that’s All~!