0

JDOを使用して、GWTプロジェクトのオブジェクトをGAEに格納しています。新しいオブジェクトの作成に問題があります。初めてオブジェクトを作成するときはうまく機能します。ただし、2回目は、前のキー値を別のKey値で上書きします。これは非常に奇妙です。ページを更新すれば、新しいオブジェクトを作成できると言えます。これは私が使用しているコードです。postパラメータは新しいオブジェクトであり、データストアエンティティの新しいIDがこれを証明していると思います。私が理解していないのは、以前に作成したオブジェクトがどこに行ったかです。

public static Post addPost(Post post) {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    Transaction tx = pm.currentTransaction();
    try{
        tx.begin();
        post.getTopic().addPost(post);
        pm.makePersistent(post.getTopic());
        pm.detachCopyAll(post.getTopic());
        tx.commit();

    } finally {
        if (tx.isActive())
            tx.rollback();
        pm.close();
    }
    return post;
}
4

2 に答える 2

0

私は今問題を解決しましたが、それはデータストアとはまったく関係がありませんでした。問題は、私が持っていたトピックがクライアントから渡されたことでした。このトピックはページの読み込み時に更新され、その後は更新されませんでした。したがって、私は常に古いトピックを、新しく追加された投稿が含まれていない関数に渡していました。したがって、トピック投稿リストの前の要素を「上書き」します。新しい投稿を追加する前に、サーバー側でトピックを検索することでこれを解決しました。

于 2013-03-08T17:08:19.000 に答える
0

オブジェクトのライフサイクル状態に注意することをお勧めします。一時オブジェクトを永続化に渡すと、公開されている JDO 仕様に従って永続化されます。あなたのPostクラスは表示されず、エントリー時の値やデータストアにあったものも、ログ (PUT が行われたことを示します) も表示されません。

于 2013-03-07T07:44:32.767 に答える