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