Jpa 标准API查找';空';
以下是一个更大的条件查询的摘录:Jpa 标准API查找';空';,jpa,null,criteria-api,Jpa,Null,Criteria Api,以下是一个更大的条件查询的摘录: ... Expression literal = builder.literal((String) "%" + value + "%"); List<Predicate> globalPredicate = new ArrayList<>(); globalPredicate.add(builder.equal(subject.get(Subject_.email), literal)); predicates.add(builde
...
Expression literal = builder.literal((String) "%" + value + "%");
List<Predicate> globalPredicate = new ArrayList<>();
globalPredicate.add(builder.equal(subject.get(Subject_.email), literal));
predicates.add(builder.or(globalPredicate.toArray(new Predicate[globalPredicate.size()])));
...
。。。
表达式literal=builder.literal((字符串)“%”+value+“%”);
List globalPredicate=new ArrayList();
globalPredicate.add(builder.equal(subject.get(subject.email),literal));
add(builder.or(globalPredicate.toArray)(新谓词[globalPredicate.size()]);
...
存在这样一种情况,即我明确希望传入null
,并查找主题uu.email
谁是null
。我尝试传入null
,发现CriteriaAPI需要一个nullLiteral()。在适当的时候,我尝试有条件地用nullLiteral()替换literal,但结果什么也没有返回
创建与数据库中指定属性的null
值匹配的查询的最佳实践方法是什么?我通常使用。以您的例子:
globalPredicate.add(subject.get(Subject_.email).isNull());
至于这是否被视为“最佳实践”,Oracle的Java EE教程对此进行了演示。Null或NotNull可用于标准查询,如下所示:
// IS [NOT] NULL
Predicate n1 = cb.isNull(name);
Predicate n2 = cb.isNotNull(name);
使用此链接作为参考:Ok,但
null
不是必须的,它是可选值。剩下的时间我需要传递一个文字。所以你是说,如果我检测到null
值,最好的方法是有条件地在我的语句和你的语句之间切换。是的,这就是我的建议。我怀疑,如果传入的值是NULL
,那么其他方法可能会转换成类似于email=NULL
的东西。您可以通过检查生成的本机查询来验证这一点。