0

Google App Engine を使用していますが、オブジェクトをデータストアに保存しようとすると問題が発生します。私は Eclipse Indico プラットフォーム、JDO を使用して保存したいオブジェクトを記述し、JSF テクノロジーをユーザー インターフェイスに使用しています。アプリケーションをecliplseプラットフォームで実行すると、正常に動作する場合(オブジェクトが正しく保存される)と動作しない場合があり、コードが実行されても何も起こらず(エラーメッセージも表示されません)、war/WEBファイルを削除すると-INF/appengine-generated/local_db.bin 実行前は再作成されません。同じアプリケーションを Google App Engine で実行しても問題は同じです。実行中に何も起こらないか、最後に保存されたオブジェクトが最後に置き換えられることがあります。同じアプリケーションが変更なしで機能し、理由もなく機能しない理由がわかりません。

これは私のオブジェクトの 1 つです (getter メソッドと setter メソッドは省略されています)。

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class User implements Serializable {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long idUser; 
@Persistent
private String email;
@Persistent
private String name;
@Persistent
private String surname;
@Persistent
private String password;

これは、オブジェクトを保存するために使用するコードです。

public Utente creaUtente(User user) {
    PersistenceManager pm = PMF.get().getPersistenceManager();

    try {
        user = pm.makePersistent(user);
    } catch (Exception e) {        // TODO: handle exception
        System.out.println(e.getMessage() + "DB-creaUtente");
    }
    finally{
        pm.close();
    }
    return user;        
  }

問題を解決するためのアイデアはありますか?

4

2 に答える 2

0

後でユーザーを作成すると、提供されたコードに基づいて以前に作成されたユーザーが上書きされる理由についてはお答えできませんが、渡した引数 USER と関係があると思われます。

user エンティティ (idUser) の主キーを reaUtente() 関数に設定したかどうかを確認していただけますか?

User クラスの主キーは自動生成されるため、空のままにしておくと、システムが ID を生成します。ID を指定すると、同じ ID を共有しているため、2 回目の書き込みで既存の書き込みが上書きされます。

于 2012-06-12T08:48:15.293 に答える
0

2 つの問題があります。1 つ目は、一般的なキャッチで try ブロックを使用しているためSystem.out.println、App Engine で使用できない秒のためにすべてのエラーが報告されないことです。エラーを表示するには、アプリ エンジンのログ サービスを使用する必要があります。または、アプリケーションがまだ開発中の場合は、一般的な try ブロックをすべて削除して、実際のスタック トレースを取得できます。

100% 動作しない理由については、診断するのに十分なコードがありません。

于 2012-06-11T21:43:06.880 に答える