2

以下是从更大的 Criteria Query 中提取的内容:

...
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()])));  
...

存在一个条件,我明确想要传入null并找到Subject_.emailwho are null。我尝试传入,null发现条件 API 需要一个 nullLiteral()。我尝试在适当的时候用 nullLiteral()有条件地替换文字,但后来我什么也没得到。

创建将匹配null数据库中指定属性的值的查询的最佳实践方法是什么?

4

2 回答 2

3

我通常使用Expression#isNull(). 使用您的示例:

globalPredicate.add(subject.get(Subject_.email).isNull());

至于这是否被认为是“最佳实践”,它在 Oracle 的 Java EE 教程40.3.5.1 The Expression Interface Methods中进行了演示。

于 2013-08-14T20:11:02.390 回答
-1

Null 或 NotNull 可以在条件查询中使用,如下所示:

// IS [NOT] NULL
    Predicate n1 = cb.isNull(name);
    Predicate n2 = cb.isNotNull(name);

使用此链接作为参考:http ://www.objectdb.com/java/jpa/query/jpql/comparison

于 2016-12-21T13:44:14.280 回答