2009-04-18 1 views
2

は、以下の永続性の構造とDataNucleusのを使用してアプリケーションを持つ考えてみましょう:DataNucleus:トランザクションをコミットするときに自動的にアクションを実行するにはどうすればよいですか?

あなたはのような二つの属性を持つクラスを持っている(日)とLASTUPDATE(日)作成:どのように自動的にそれらの属性を記入しますこのクラスのオブジェクトがコミットされるときの適切な値 適切な値の両方を設定することになる、オブジェクトがデータベースに挿入され、それが変更されたときだけ最終更新を更新して現在の時刻に最終更新を作成しました。

答えて

3

私は今それを自分で考え出しました。

あなたが InstanceLifecycleListener ...

public class BasicEntityLifecycleListener implements StoreLifecycleListener { 

    public void postStore(InstanceLifecycleEvent evt) { 
    } 

    public void preStore(InstanceLifecycleEvent evt) { 
     if((PersistenceCapable)evt.getSource() instanceof BasicEntity) { 
      BasicEntity obj = (BasicEntity)evt.getSource(); 
      Date now = new Date(); 
      if(JDOHelper.isNew(obj)) 
       obj.setCreated(now); 
      obj.setLastUpdate(now); 
     } 
    } 
} 

を作成し、次にあなたのPersistenceManager以内にそれを登録する必要があり

...

PersistenceManager pm = pmf.getPersistenceManager(); 
pm.addInstanceLifecycleListener(new BasicEntityLifecycleListener(), null); 

私は持っていなかったDataNucleus Access Plaftorm manualで解決策を見つけましたこれまで認識されていた。オンラインマニュアルはちょっと複雑なようです。

関連する問題