有没有办法在JPA中创建伪谓词? 有点像这样:
CriteriaBuilder cb = em.getCriteriaBuilder;
Predicate pred = cb.isTrue(false);
几乎所有CriteriaBuilder的方法都将Expression作为参数。 我也试过这个无济于事:
Expression<Object> path = cb.coalesce.value(null);
Predicate pred = cb.isNotNull(path);
显然它会抛出NPE,但我认为这可能有用,因为根据API文档:
coalesce表达式等同于一个case表达式,如果的所有参数都计算为null ,则返回null,否则返回第一个非null参数的值。
答案 0 :(得分:8)
dijunction
对我来说不起作用。
cb.isTrue(cb.literal(false))
做了什么,就像人们可以得到的那样精确地表示错误。
答案 1 :(得分:7)
我认为disjunction是您正在寻找的。默认情况下它是假的,直到某个真实谓词or
为止。