ObservableSet
Set をラップし、Set インターフェイスと Observable パターンを実装するクラスを実装し、要素が追加または削除されたときに登録済みのリスナーにイベントを発生させます。Hibernate がマップするクラスでこの ObservableSet を使用したいと思います。Hibernate は の getter と setter を必要Set
とし、それらを のインスタンスに設定しますPersistentSet.
As in this question from 2010、最初に Getter と Setter にロジックを追加して、渡された Set を ObservableSet でラップしようとしましたが、これにより例外が発生します。Exception in thread "main" org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: ...
Hibernate 内からの変更をリッスンする必要はありません。私の主な関心事は、データベースからオブジェクトを逆シリアル化すると、変更をリッスンできることです。ラッパー ObservableSet を返すだけの 2 番目の (Bean ではない) ゲッターを作成し、このメソッドを介して取得するラッパーを除いて内部セットの内容を変更しないというコーディング規則を強制することもできますが、それは親切に思えます不快でハッキーの。
考え?