0
QueryDslを使用してフィールドをNULL値で更新する際に問題が発生しました。例えばQueryDSL:SQLUpdateClauseの背後にある根拠はデフォルトでNULLを無視します
次のコード:
entity.setText(null);
new SQLUpdateClause(connection, templates, QEntity)
.where(...)
.populate(entity)
.execute();
は黙って「テキスト」フィールドの更新を無視します。
entity.setText(null);
new SQLUpdateClause(connection, templates, QEntity)
.where(...)
.populate(entity, DefaultMapper.WITH_NULL_BINDINGS)
.execute();
これは夫婦の問題発生します:
- サイレントバグを:マッパーを更新するために忘れることにつながることができ、私は適切にnull値を設定する方法を考え出すコードで掘り
更新プログラムが例外をスローしないため、後で見つけにくいバグです。
- APIの複製:互換性を維持するために、既存のupdateEntity APIに「updateNulls」フラグを追加する必要があります。
デフォルトで更新nullを無視するかどうかの根拠は何ですか? Exceptionをスローすると、Exiting APIが破損しますか?