JPA 解决n+1次查询问题

分两步操作:1、主表实体类中,添加注解@NamedEntityGraph如上,设置name值,并指定attributeNodes(看名字就知道可以指定多个),每个node的值如下图红框:2、在主表的DAO方法中 重写用到的查询方法,service层中调用什么方法就重写什么方法,我这边用到的是:Page<ContractInfo> findAll( Specification<ContractInfo> var1, Pageable var2);并添加注解@EntityG
摘要由CSDN通过智能技术生成

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

that’s All~!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值