Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 标准API查找';空';_Jpa_Null_Criteria Api - Fatal编程技术网

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
的东西。您可以通过检查生成的本机查询来验证这一点。