Spring Data Jpa 关于fetch join 的错误

spring data jpa 文档的官方网站:

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/


在开发中使用到 Jpa Dao 方法时,出现如下错误:

fetch join...

but the owner of the fetched association was not present in the select list。。。


原因是和使用了 left join fetch 关键字有关,可以理解为使用 join 查询的表,并没有出现在 select 关键字之后。

就是说查询的结果集中没有直接关联到join表的属性。


我的真实情况如下:

写成如下,正常编译

@Query("SELECT o FROM Order o left join fetch o.orderStatus where o.creation between ?1 and ?2 and o.removed=?3")
List<Order> findByCreationBetweenAndRemoved(Date beginDate, Date endDate, boolean b);


改为如下,则出现上述所说的错误

@Query("SELECT o.id FROM Order o left join fetch o.orderStatus where o.creation between ?1 and ?2 and o.removed=?3")
List<Long> findByCreationBetweenAndRemoved(Date beginDate, Date endDate, boolean b);

原因就是 left join fetch 后面的o.orderStatus 对应的实体表,并没有在o.id中出现。


修改比较简单,

1,返回值用包含join表的实体接受

2,去掉left join fetch关联



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值