2019 年请教,spring data jpa 中,分页查询返回多个表字段应该怎么处理?

2019-06-25 23:31:11 +08:00
 ebony0319

先说一下最近使用 JPA 的体验:说真的,这辈子我都不想再碰了,但是项目选型就用了 JPA。当然 JPA 方面我也很水。 我遇到了一个老哥之前发的帖子:/t/333899 不知道到现在有没有好的解决方案,我这几天也是遇到了这个问题。 引用一下:

继承了 PagingAndSortingRepository , 这个接口提供了 Page<t> findAll(Pageable var1); 方法 我需要自定义 sql 然后返回字段是从两个表中挑选出来的. sql 类似这样的:</t>

select a.name ax , a.cd cd , b.name ax from a 
left join b on b.id = d.bid

我需要在上面 sql 返回结果的基础上分页和排序, 请问大家怎么处理这个问题?


1530 次点击
所在节点    问与答
4 条回复
ebony0319
2019-06-26 11:10:13 +08:00
老哥们在么
lllpla
2019-06-26 11:42:37 +08:00
对于单表来说,findAll 里面用

PageRequest.of(0,10, Sort.by(Sort.Order.desc("xxx")))
多表可能也是用这个吧 仅供参考
wdmx007
2019-06-26 16:22:24 +08:00
试试在 @Query 里面写 JPQL (自定义字段+join ) ,
然后在 SpringDataJPA 的 Repository 接口定义方法 Page<Object[]> findXXX( );

OrderRefundRecord
@OnoToOne
Order

参考一下这个
```java

@Query("select R.remark, R.reason, O.id,O.contactMobile from OrderRefundRecord R left join R.order O where R.order.contactName = ?1 ")
Page<Object[]> findTest(String name,Pageable pageable);

```
wdmx007
2019-06-26 16:28:04 +08:00
这里面提到不用写为 Object[] ,可以定义 VO 来接收数据,待验证
https://blog.csdn.net/phapha1996/article/details/78994395

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/577462

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX