NGC 604 2024-09-26 14:38 采纳率: 33.3%
浏览 8
已采纳

jpa多表分页查询排序

jpa多表分页查询,加了order by 后 每次分页的数据不一致,求解
代码如下

    final PageRequest pageRequest = PageRequest.of(pageNum, pageSize);
    final Page<Object[]> page = albumImageEntityRepository
            .findByPageWithAlbumIdAndDeleted(false, albumId, pageRequest);


  @Query(nativeQuery = true,
          value = "select " +
                  "image.id, image.name, image.size," +
                  "image.location," +
                  "image.url, image.zip_url," +
                  "DATE_FORMAT(image.last_modify_date, '%Y-%m-%d %H:%i:%s')  as last_modify_date " +
                  "from album_image left join image " +
                  "on album_image.image_id = image.id " +
                  "where album_image.album_id = :albumId and album_image.deleted = :deleted " +
                  "order by image.last_modify_date desc ",
          countQuery = "select count(*) from album_image left join image on album_image.image_id = image.id where album_image.album_id = :albumId and album_image.deleted = :deleted")
  Page<Object[]> findByPageWithAlbumIdAndDeleted(@Param("deleted") boolean deleted, @Param("albumId") BigInteger albumId, Pageable pageable);
  • 写回答

1条回答 默认 最新

  • jarzhen 2024-09-26 15:05
    关注

    首先了解一下执行顺序,https://blog.csdn.net/u014044812/article/details/51004754
    select在前,order by在后,你的sql日期转化为年月日时分秒字符串了,可能还有毫秒,毫秒原本不同但是这么一转换就相同了,导致乱序
    解决办法:使用子查询将日期转化放在外层查询,里面查询使用原日期字段,排序放在内层子查询

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已采纳回答 9月26日
  • 创建了问题 9月26日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?