spring-data-jpa JPA条件API -一个“NOT IN” predicate ,用于按ID排除某些实体

3npbholx  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(189)

我很难理解我如何才能进行一个类似“不在”的查询。
基本上我有一个根Agent。这些代理有一个UUID id
我想在 predicate 列表中添加一个 predicate ,以便在查询中排除ID在给定UUID集/集合中的任何代理。
不完全知道如何去做,但我看到有一个在,但没有不在,但有一个isNotMember...

@Override
public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {

    root.fetch(Agent_.TAGS, JoinType.LEFT);
    query.distinct(true);

    List<Predicate> predicateList = new ArrayList<>();

    if(!excludedAgents.isEmpty()){

        // Excluded Agents is a Set<UUID> of the Agent Ids to exclude.
        Predicate notMember = criteriaBuilder.isNotMember(????);
        predicateList.add(notMember);

    }

    //More predicates here added....

    return criteriaBuilder.and(predicateList.toArray(new Predicate[0]));
}

谢谢你的帮助!

qyswt5oh

qyswt5oh1#

isMember/isNotMember用于检查某个实体是否不属于toMany关系。
你要找的是

builder.not(root.get("id").in(uuids))

相关问题