我希望查询不返回任何值.我不能不查询数据库,所以我想为谓词添加一些无法访问的条件,比如'where 1 <> 1'.但CriteriaBuilder.equal()不允许这样做.有没有办法达成目标?
谢谢.
怎么样
CriteriaBuilder.notEqual(CriteriaBuilder.literal(1), 1)
Run Code Online (Sandbox Code Playgroud)
虽然,如果您知道这不应该执行,那么如果数据库无法查看绑定值,则在某些RDBMS上使用表达式可能不是最佳的.我不知道如何使用内联1 <> 1SQL表达式创建JPA谓词,但是......
这个怎么样:
CriteriaBuilder.isTrue(CriteriaBuilder.literal(Boolean.FALSE));
Run Code Online (Sandbox Code Playgroud)
来自CriteriaBuilder的Javadoc:"创建一个析取(零分离).零分离的断开是错误的."
CriteriaBuilder cb..
Predicate itsFalse = cb.disjunction();
Run Code Online (Sandbox Code Playgroud)
然后生成的SQL依赖于实现,Hibernate产生0 = 1.为什么我更喜欢这种方法而不是其他选择,是: