6

私は現在、このようにしています。

final CriteriaBuilder builder = ...;
final boolean flag = ...;

if (flag) {
    builder.isTrue(expression);
} else {
    builder.isFalse(expression);
}

このまま使ってもいいですか?

builder.equals(expression, flag);

この試みは問題ありませんか?式か何かに対して null と言います。

4

1 に答える 1

17

CriteriaBuilderequalメソッドを使用することをほのめかしたと思います。この場合、はい、次のように使用できます。

builder.equal(expression, flag);

そして、これは次と同等です:

if (flag) {
  builder.isTrue(expression);
} else {
  builder.isFalse(expression);
}

Hibernateただし、プロバイダーとして使用する場合、前者の実装は true のJPA場合に NPE をスローしますが、後者の実装はそうではないことに注意してください。expression==null

于 2012-08-24T15:48:27.990 に答える