2016-09-06 14 views
0

ynullの場合、CriteriaBuilder.equal(Expression<?> x, Object y)は常にfalseと評価されますが、驚いたことにそれは起こりません。関連フィールドがnull(これは文字列に対してのみテスト済みです)の場合はtrueに評価されます。CriteriaBuilder.equal()はnull値をどのように扱いますか?

ここで私が見つけたのはthis explanationです。これは誤った初期仮定に相当します。

ここで実際に何が起こっていますか? ynullの場合、CriteriaBuilder.equal(Expression<?> x, Object y)CriteriaBuilder.isNull(Expression<?> x)に変換されていますか? null文字列は'null'に変換されていますか?または私は何とか間違っていますか?

+0

これはプロバイダ固有ですが、EclipseLInkはパラメータがnullであることを確認して等価性チェックをisNullに変換します条件照会から式を作成するときにチェックします。パラメータが渡される前に式が準備されている可能性があるので、これは当てはまりません。 – Chris

+0

ありがとう、それを答えに変えれば私はそれを受け入れます! – oulenz

答えて

2

これはプロバイダ固有ですが、EclipseLInkはパラメータがnullであると判断して、条件照会から式を作成するときに等価チェックをisNullチェックに変えることができます。

関連する問題