1

デタッチ コピーについての私の理解では、PersistenceManager に気付かれずにオブジェクトを変更できるように、オブジェクトのコピーが作成されるということです。

モデル オブジェクトを使用するビューに渡す前に PersistenceManager を閉じるので、渡す前に detachCopy や makeTransient などを呼び出す必要はありません。

私が見た例はそれを呼び出します...これは私がhttp://code.google.com/appengine/docs/java/datastore/creatinggettinganddeletingdata.htmlから見た例です:

public Employee getEmployee(User user) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    Employee employee, detached = null;
    try {
        employee = pm.getObjectById(Employee.class,
            "Alfred.Smith@example.com");

        // If you're using transactions, you can call
        // pm.setDetachAllOnCommit(true) before committing to automatically
        // detach all objects without calls to detachCopy or detachCopyAll.
        detached = pm.detachCopy(employee);
    } finally {
        pm.close();
    }
    return detached;
}
4

2 に答える 2

1

http://db.apache.org/jdo/attach_detach.htmlから

切り離されたオブジェクトは、そのデータストア エンティティの ID を保持します。切り離されたオブジェクトは、オブジェクトを更新して後でアタッチする (データストア内の関連付けられたオブジェクトを更新する) 場合に使用する必要があります。データストア内のオブジェクトのコピーを独自の ID で作成する場合は、detachCopy の代わりに makeTransient を使用する必要があります。

于 2013-11-03T22:28:15.183 に答える
1

例にあるように、PMF prop を使用してオブジェクトを自動的に切り離すか、それらのコピーを手動で切り離すことができます。さて、質問は何でしたか?

于 2010-02-10T19:21:20.913 に答える