CriteriaBuilder.equal()如何处理空值?

时间:2016-09-06 18:39:28

标签: null eclipselink jpa-2.0 criteria-api

我希望CriteriaBuilder.equal(Expression<?> x, Object y)ynull时始终评估为false,但令我惊讶的是,并非发生了什么:对于相关的行,它的计算结果为true字段也是null(我只测试过字符串)。

我唯一能找到的就是this explanation,这与我错误的初步假设相对应。

这里到底发生了什么?当CriteriaBuilder.equal(Expression<?> x, Object y)CriteriaBuilder.isNull(Expression<?> x)时,y会转换为null吗? null字符串是否已转换为'null'?或者我在某种程度上是错误的?

1 个答案:

答案 0 :(得分:2)

它是特定于提供者的,但EclipseLInk可以告诉您的参数为null,因此在从条件查询创建表达式时将等同性检查转换为isNull检查。如果使用参数,则不是这种情况,因为可以在传入参数之前准备表达式。