2

次の永続構造を持つ DataNucleus を使用するアプリケーションを検討してください。

created (Date) とlastUpdate (Date)のような 2 つの属性を持つクラスがあります。このクラスのオブジェクトがコミットされるときに、これらの属性に適切な値を自動的に入力するにはどうすればよいでしょうか? 適切な値は、オブジェクトがデータベースに挿入されたときに createed と lastUpdate の両方を現在の時刻に設定、変更されたときにlastUpdateを更新することです。

4

1 に答える 1

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 のマニュアルで解決策を見つけました。オンラインマニュアルは私には少し複雑に思えます。

于 2009-04-18T18:26:48.747 に答える