0
我预计CriteriaBuilder.equal(Expression<?> x, Object y)
总是评估为假y
是null
,但令我惊讶,这不是什么情况发生:它的相关领域也是null
(我只测试了这个字符串)行评估为true。CriteriaBuilder.equal()如何处理空值?
我唯一能找到的就是this explanation,这对应于我错误的初始假设。
这里真的发生了什么?当y
是null
时CriteriaBuilder.equal(Expression<?> x, Object y)
转换成CriteriaBuilder.isNull(Expression<?> x)
?是null
字符串转换为'null'
?或者我有点误会?
它是提供程序特定的,但EclipseLInk可以告诉您的参数为空,因此将相等检查转换为isNull检查它何时从条件查询创建表达式。如果使用参数,情况并非如此,因为表达式可能在参数传入之前就已经准备好了。 – Chris
谢谢,如果您将其转换为答案,我会接受它! – oulenz