首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Coding
V2EX  ›  问与答

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

  •  
  •   ebony0319 · 170 天前 · 511 次点击
    这是一个创建于 170 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说一下最近使用 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 返回结果的基础上分页和排序, 请问大家怎么处理这个问题?


        1
    ebony0319   169 天前
    老哥们在么
        2
    lllpla   169 天前   ♥ 1
    对于单表来说,findAll 里面用

    PageRequest.of(0,10, Sort.by(Sort.Order.desc("xxx")))
    多表可能也是用这个吧 仅供参考
        3
    wdmx007   169 天前   ♥ 1
    试试在 @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);

    ```
        4
    wdmx007   169 天前   ♥ 1
    这里面提到不用写为 Object[] ,可以定义 VO 来接收数据,待验证
    https://blog.csdn.net/phapha1996/article/details/78994395
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1000 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 22:05 · PVG 06:05 · LAX 14:05 · JFK 17:05
    ♥ Do have faith in what you're doing.