【发布时间】:2017-01-14 07:26:49
【问题描述】:
当y 为null 时,我预计CriteriaBuilder.equal(Expression<?> x, Object y) 总是评估为假,但令我惊讶的是,事实并非如此:对于相关字段也是null 的行,它评估为真(我已经仅针对字符串进行了测试)。
我唯一能找到的就是this explanation,这与我最初的错误假设相对应。
这里到底发生了什么?当y 为null 时,CriteriaBuilder.equal(Expression<?> x, Object y) 是否转换为CriteriaBuilder.isNull(Expression<?> x)? null 字符串是否转换为 'null'?还是我弄错了?
【问题讨论】:
-
它是特定于提供程序的,但 EclipseLInk 可以判断您的参数为空,因此当它从条件查询创建表达式时,将相等检查转换为 isNull 检查。如果您使用参数,则情况并非如此,因为表达式可能会在参数传入之前准备好。
-
谢谢,如果你把它变成答案,我会接受!
标签: null eclipselink jpa-2.0 criteria-api