qq_43361434
'HALO
采纳率0%
2021-05-06 22:45 阅读 44

jpa specification left join 导致数据重复

求助大佬

jpa中,需要分页,specification中需要自定义排序,所以使用了下面的代码,又需要验证其他表,所以使用了left join,导致查询出来的数据重复,使用distinct,但是报
"在查询列表中必须出现SELECT DISTINCT, ORDER BY表达式".查询很多资料后,可使用group by,虽然可以去重,但返回的分页数据中的totalElements与实际的totalElements不相等(是未group by后的长度),

求助求助呀

 

List<Order> orders = new ArrayList<>();
        orders.add(cb.asc(cb.selectCase().when(cb.equal(root.get("contractStatus").as(Byte.class), 2), 1)
            .when(cb.equal(root.get("contractStatus").as(Byte.class), 4), 2)
            .when(cb.equal(root.get("contractStatus").as(Byte.class), 1), 3)
            .when(cb.equal(root.get("contractStatus").as(Byte.class), 3), 4).otherwise(10)));
        orders.add(cb.desc(root.get("createDate")));
        query.orderBy(orders);

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • software7503 CSDN专家-赖老师(软件之家) 2021-05-06 22:53

    要在SQL语句中加入distinct,类似这样的语句

    @Query("SELECT DISTINCT listing FROM SellerListing listing WHERE listing.id=:id")

    点赞 评论 复制链接分享
  • mingjiexian mingjiexian 2021-05-07 11:10

    建议直接抓出 统计数量的SQL和分页查询的SQL对比

    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 2021-05-07 11:10

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 2021-05-07 15:59

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    点赞 评论 复制链接分享

相关推荐