0

私はこれに似たクラスを持っています:

public static class Stats implements Serializable {
    private static final long serialVersionUID = 1L;        
    @Persistent(serialized = "true", defaultFetchGroup="true")
    private Map<String, Integer> requests;

    public Stats() {
        requests = new HashMap<String, Integer>();
    }
}

ただし、Appengine は次のように不平を言っています。HashMap is not a supported property type.

では、Appengine で「HashMap」を保存するにはどうすればよいでしょうか? 他の回避策はありますか?

4

2 に答える 2

1

EmbeddedEntity を見てみたいかもしれません。まだ公式の Javadoc にはありませんが、まもなく公開される予定です。AE グループの 1.6.6 SDK プレリリース発表を参照してください。

別の解決策は、マップを Blob プロパティにシリアル化することです。

ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream writer;

try {
   writer = new ObjectOutputStream(out);
   writer.writeObject(requests);
   writer.close();

  Blob requestsMapAsBlob = new Blob(out.toByteArray());

} catch (Exception e) {
  // TODO: handle exceptions 
}

次に、そのブロブからマップを復元できますreadObject()

于 2012-05-21T17:14:40.463 に答える
1

JDOを使用しているようです。サポートされているJDO コレクション タイプを参照してください。代わりに、サポートされているコレクション型のいずれかを使用してデータを表すことができるかどうかを検討するか、HashMap をシリアル化されたフィールドとして格納することができます。

于 2012-05-21T07:50:51.420 に答える