0
y
がnull
の場合、CriteriaBuilder.equal(Expression<?> x, Object y)
は常にfalseと評価されますが、驚いたことにそれは起こりません。関連フィールドがnull
(これは文字列に対してのみテスト済みです)の場合はtrueに評価されます。CriteriaBuilder.equal()はnull値をどのように扱いますか?
ここで私が見つけたのはthis explanationです。これは誤った初期仮定に相当します。
ここで実際に何が起こっていますか? y
がnull
の場合、CriteriaBuilder.equal(Expression<?> x, Object y)
はCriteriaBuilder.isNull(Expression<?> x)
に変換されていますか? null
文字列は'null'
に変換されていますか?または私は何とか間違っていますか?
これはプロバイダ固有ですが、EclipseLInkはパラメータがnullであることを確認して等価性チェックをisNullに変換します条件照会から式を作成するときにチェックします。パラメータが渡される前に式が準備されている可能性があるので、これは当てはまりません。 – Chris
ありがとう、それを答えに変えれば私はそれを受け入れます! – oulenz