gpt4 book ai didi

Spring JPA 规范不在查询中

转载 作者:行者123 更新时间:2023-12-02 02:29:36 27 4
gpt4 key购买 nike

这里使用 Spring JPA 规范的 IN 条件查询工作正常。但我不知道如何使用“NOT IN”..

那么我如何使用 Spring JPA 规范来使用 NOT IN 条件查询。

SearchSpecification<User> spec = new CommonSpecification<Case>(new SearchCriteria("client.id", Operator.NOT_IN, clientIdList));

@Override
public Predicate toPredicate(Root<T> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Predicate predicate = null;
switch (searchCriteria.getOperator()) {

case IN:
if (searchCriteria.getValue() instanceof List<?>) {
predicate = getFieldPath(searchCriteria.getKey(), root)
.in(((List<?>) searchCriteria.getValue()).toArray());
}
break;
case NOT_IN:
//What to do???
break;
default:
break;

}
return predicate;
}


private Path<Object> getFieldPath(String key, Root<T> root) {
Path<Object> fieldPath = null;
if (key.contains(".")) {
String[] fields = key.split("\\.");
for (String field : fields) {
if (fieldPath == null) {
fieldPath = root.get(field);
} else {
fieldPath = fieldPath.get(field);
}
}
} else {
fieldPath = root.get(key);
}
return fieldPath;
}

最佳答案

使用Predicate.not()方法;代码与 IN 情况相同,只需添加 .not():

case NOT_IN:
if (searchCriteria.getValue() instanceof List<?>) {
predicate = getFieldPath(searchCriteria.getKey(), root)
.in(((List<?>) searchCriteria.getValue()).toArray())
.not();
}
break;

关于Spring JPA 规范不在查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40356797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com