jpa 构建specification 查询方法要求不等于两个值怎么写
要求不等于两个值,可以使用notIn方法来构建查询条件。
假设要查询的实体类为User,要求User的status不等于value1和value2,可以使用如下代码构建Specification查询方法:
public static Specification<User> notEqualTwoValues(String value1, String value2) {
return (root, query, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
predicates.add(criteriaBuilder.notEqual(root.get("status"), value1));
predicates.add(criteriaBuilder.notEqual(root.get("status"), value2));
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
};
}
然后在使用JpaRepository进行查询时,可以通过调用findAll(Specification<T> spec)方法传入上述构建的Specification查询方法来实现查询:
List<User> users = userRepository.findAll(notEqualTwoValues("value1", "value2"));
以上代码将查询出status字段不等于value1和value2的User实体对象列表
原文地址: https://www.cveoy.top/t/topic/hMxK 著作权归作者所有。请勿转载和采集!