如何在JPA中创建无操作(no-op)Predicate?
如何用JPA创建无操作(no-op)Predicate?
想要创建一种不会在生成的SQL中生成任何内容的「空」谓词,测试过CriteriaBuilder.conjunction(),虽然能实现功能,但Hibernate会生成带1 = 1的WHERE子句,不符合需求。
解决方案
直接返回null即可。结合Spring的Specification抽象使用时,这个方法能完美工作。示例代码如下:
public static Specification<Car> myClause(String matchVal) { return (root, query, builder) -> { if (matchVal == null) { return null; } // 构建Predicate逻辑 ... }; }
当聚合组合多个Specification时,返回null的Predicate部分会被自动忽略,不会生成对应的SQL内容。
内容的提问来源于stack exchange,提问作者peterh
相关产品推荐
相关产品推荐

