JPA 使用specification条件查询中distinct去重的用法

多表连接查询distinct去重

//分页及排序
pageInfo.setNumber(pageInfo.getNumber() - 1);
Pageable pageable = new PageRequest(pageInfo.getNumber(), pageInfo.getSize(), Sort.Direction.DESC, “id”);
//查询条件
Specification<User> specification = (root, cq, cb) -> {
List<Predicate> preList = new ArrayList<>();
// 模糊查询
if (StringUtils.isNotEmpty(name)) {
preList.add(cb.and(cb.like(root.get(“name”).as(String.class), “%”+name+"%")));
}
// distince去重
cq.distinct(true);
return cb.and(preList.toArray(new Predicate[preList.size()]));
};

sql是这样的:
SELECT DISTINCT
expert0_.ID AS ID1_5_,
expert0_.CREATED_TIME AS CREATED_2_5_,
expert0_.CREATOR AS CREATOR3_5_,
expert0_.ENABLED AS ENABLED4_5_,
expert0_.MODIFIED_TIME AS MODIFIED5_5_,
expert0_.REVISER AS REVISER6_5_,
FROM
T_TS_EXPERT expert0_
LEFT OUTER JOIN T_TS_EXPERT_APPOINTMENT expertappo1_ ON expert0_.ID = expertappo1_.EXPERT_ID
WHERE
expert0_.CREATOR =?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值