私は、オプティミスティックな並行性制御を実装するために、バージョン列でHibernateを使用しています。汚れていてもいなくても、Hibernateでの保存時にバージョンフィールドを増やす方法は?
質問:エンティティのバージョン番号を変更するかどうかにかかわらず、データベースに保存するたびにその番号を増やすことはできますか?
エンティティでフィールドが変更されている限り、バージョン番号は増加します。ただし、エンティティでフィールドが変更されていない場合、エンティティのバージョン番号は変更されません。
この問題の背景には、2つのテーブルの間に論理的なマスター/ディテール関係があり、マスターデータが詳細に変更された場合でも、マスターテーブルのバージョン番号を増やしたいと思います。 t変化。このマスターディテール関係は、Hibernateにマップされません。私はいつも一緒に単一のトランザクションでそれらを保存します。
インターセプタを使用してバージョンの更新をトリガしましたか? – Fil
私はまだインターセプタで作業していません。例がありますか?私が理解する限り、* findDirty(...)*関数を上書きすることで、エンティティをダーティとマークするだけで十分です。 – MicSim
私はそれらを主に監査目的で使用しましたが、さまざまなイベント(postFlush、postFlushDirtyなど)後にエンティティへのアクセス権を付与します。ディテールがフラッシュされると、マスター上のバージョン番号を更新する2番目の呼び出しを行うことができます。 – Fil