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

看起来您正在使用 JDO。请参阅支持的JDO 集合类型。您可以考虑是否可以使用其中一种受支持的集合类型来表示您的数据,或者您可以将 HashMap 存储为序列化字段。

于 2012-05-21T07:50:51.420 回答
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 
}

然后,您可以使用该 blob 恢复地图readObject()

于 2012-05-21T17:14:40.463 回答