求助大佬
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);
要在SQL语句中加入distinct,类似这样的语句
@Query("SELECT DISTINCT listing FROM SellerListing listing WHERE listing.id=:id")
建议直接抓出 统计数量的SQL和分页查询的SQL对比
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y