は、次のhibernate設定を考えてみましょう。 HibernateのAuditInterceptorクラス(Interceptorを実装)では、エンティティがAuditableのインスタンスである場合、監査機能を実行します。要するに、このコードのすべては、私たちはいくつかのためにチェックすることはできません... ...しかし休止監査可能な多対多の関係は
、我々は技術的にそれのためのPOJOを持っていないので、監査されません。このPersonAddressテーブルがあります素晴らしい作品"instanceof"このPersonAddressテーブルを傍受するように指示することができる休止状態の設定には何らかの方法がありますか?インターセプターからの他のアクションの1つ(onCollectionUpdateなど)を処理する必要があるかもしれません。私は確信していません...
Auditに強制すると考えることができる唯一の他の方法は、PersonからPersonAddressへの1対多の関係を、AddressからPersonAddressへの1対多に変換することですPersonとAddressに多対1のマッピングを戻すPersonAddress用の別のクラス要素を作成します。
これは余分な仕事のようなものだと私は本当に余分な仕事を避けたい。
誰かがより良い解決策を提案できますか?
ありがとうございます!
実際には、PersonオブジェクトとAddressオブジェクトの両方にデータを追加します。私たちは、HibernateがPersonAddressテーブルを更新しないことを発見しました。 マニングのHibernate In Action(343ページ)にあるAuditLogInterceptorの修正版を使用しています。一般的な考え方は変わりません。つまり、POJOを確認するための特別なロジックがありません。提供されたエンティティがAuditableタイプである場合、そのエンティティを更新セット、挿入セット、または削除セットに追加します。 この2つの特定のクラスのロジックを削除することはできますが、関係が何らかの方法で変更されたかどうかはわかりません。 –