jpa - 标准 API 查找 'NULL'

标签 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(builder.or(globalPredicate.toArray(new Predicate[globalPredicate.size()])));  
...

存在一种情况,我明确希望传入 null 并查找 NullSubject_.email。我尝试传入 null 并发现标准 API 需要 nullLiteral()。我尝试在适当的时候有条件地用 nullLiteral() 替换 literal,但后来我什么也没返回。

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

最佳答案

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

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

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

关于jpa - 标准 API 查找 'NULL',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240013/

相关文章:

java - Scanner 构造函数导致 bufferedReader 返回 null

hibernate - 如何使用 JPA Criteria Api 使用文字参数调用 db2 数据库函数?

java - CriteriaBuilder 没有方法 createCriteriaUpdate

java - 使用 @OneToMany 注释关系时是否可以定义 LEFT Join?

java - Spring JPA,@JointTable 注释不起作用

sql - Hibernate 4.1.2.FINAL 禁用上下文 LOB 创建,因为 createClob() 方法抛出错误,Blob 字段

java - map 的 JPA map

c# - 替换 C# 读取的 CSV 文件中的所有空值

java - JPA/EclipseLink - 检索列名称

postgresql - 使用来自 VALUES 表达式的输入更新列,无需显式类型转换