2

DataNucleus 2 JDO 実装を使用しています。アタッチする必要がある切り離されたオブジェクトがありますが、すべてのフィールド (この場合はコレクション) をアタッチしたくありません。

public class Obj {
    private String key;
    private Collection<String> col;
}

これを行うことができない理由はありますか:

tx.begin();
obj.makeTransientAll(obj.getCol()); // Do not persist
pm.makePersistent(obj);
tx.commit();

またはデータベースから REFRESH:

tx.begin();
obj.refreshAll(obj.getCol()); // Discard any changes
pm.makePersistent(obj);
tx.commit();

ありがとう。

4

1 に答える 1

0

オブジェクトを更新した後、または一時的なものにした後で、変更を適用する必要があると思います。またはその一方で、どのように機能するかをもっと理解するために本当にやりたかったことをしますJDOが、調査する時間があまりありませんでした。最初にオブジェクトを検索した後、オブジェクトをデタッチせずに、アタッチされた状態に保ち、ルックアップメソッドの外部で変更してから、別のメソッドで永続化してみませんか?

ここで私を混乱させるのは、ルックアップメソッドでは閉じないことPersistenceManagerです。オブジェクトを保存する後者のメソッドではPersistenceManager、別のオブジェクトを使用しているため、例外を発生させる必要がある別のオブジェクトを使用しますPersistenceManager。そもそも調べたものより。

私はまだ学んJDODatanucleusいるので、私の提案がうまくいかないかもしれないことを期待してください。そして、私の提案とあなたの経験を共有することは非常にありがたいです。

于 2013-03-22T23:45:03.387 に答える