これはない NHibernateのコードです(それは、Hibernate、Javaコードである)が、NHibernateはAPIをグーグルすると、それは同様のコードのように見えるあなたにもNHibernateのために始めることができ(Owner
性質を持っているPersistentMap
クラス、およびCollectionSnapshot
プロパティがあります):
public void onCollectionUpdate(Object collection, Serializable id) {
System.out.println("****onCollectionUpdate");
if(collection instanceof PersistentMap) {
PersistentMap newValues = (PersistentMap) collection;
Object owner = newValues != null ? newValues.getOwner() : null;
Set<?> oldValues = newValues != null
? ((Map<?, ?>) newValues.getStoredSnapshot()).keySet()
: null;
System.out.println("owner: " + (owner != null ? owner.toString() : "(null)"));
System.out.println("oldValues: " + (oldValues != null ? oldValues.toString() : "(null)"));
System.out.println("newValues: " + (newValues != null ? newValues.toString() : "(null)"));
} else if (collection instanceof PersistentSet) {
PersistentSet newValues = (PersistentSet) collection;
Object owner = newValues != null ? newValues.getOwner() : null;
Set<?> oldValues = newValues != null
? ((Map<?, ?>) newValues.getStoredSnapshot()).keySet()
: null;
System.out.println("owner: " + (owner != null ? owner.toString() : "(null)"));
System.out.println("oldValues: " + (oldValues != null ? oldValues.toString() : "(null)"));
System.out.println("newValues: " + (newValues != null ? newValues.toString() : "(null)"));
}
}
私はこれがC#またはNHibernateのコードではないことに注意してください。 NHibernateにとってまったく役に立たない場合はコメントしてください(もし私のグーグルがそれが似ていると言っても、APIが全く似ていない場合)、投稿を削除します。
私は今のJava土地に浸漬しています、または私はあなたのためにこれを試してみたい:)
これは私がどのように役立つのか分かりません。私は通常のオブジェクトのプロパティ、コレクションだけで変更を検出するのに問題はありません - そして、コレクションのAddメソッドとRemoveメソッドはプロキシで呼び出されません(これは遅延ロードされていないオブジェクトでは機能しません) – Nir
@Nir soあなたはcolelctionの変更を傍受することができます... –
たとえば、誰かがpost.Commentsを呼び出すときに、ブログデータモデルを使用するとします。Commentsプロパティを追加するgetterはプロキシで呼び出され、キャプチャすることができますが、これはAdd(私が知っているすべてのforeachループからGetEnumeratorになる可能性があります)と呼ばれていません。追加されたもの – Nir