【问题标题】:Google App Engine Supported Datastore TypesGoogle App Engine 支持的数据存储类型
【发布时间】:2012-02-27 09:48:50
【问题描述】:

有谁知道 GAE Datastore API 是否支持用户制作的类和\或集合(例如 ArrayList 等)?

我有以下代码行:

entity.setProperty("offlineUsers",user._network._offlineUsers);

属性类型是我创建的“用户”类的 ArrayList。这行代码抛出了以下异常:

java.lang.IllegalArgumentException: offlineUsers: com.example.computeroom.User is not a supported property type.

所以阅读数据存储指南http://code.google.com/intl/iw/appengine/docs/java/datastore/entities.html 会引起我的怀疑,即您无法存储您创建的类或集合/数组 - 我只能看到对基本类型(int、boolean 等)的支持,而没有提及用户定义的对象或数组\集合。

1- 只是为了确定-数据存储是否不支持用户类?

2- 集合/数组呢?真的不支持数组吗?
我应该如何存储大量用户/数据?

【问题讨论】:

    标签: java google-app-engine entity google-cloud-datastore


    【解决方案1】:

    我不确定它是否回答了你的问题.. 有些地方在阅读查询和索引页面时看到了这个

    dataStore.put(Arrays.asList(person, weddingPhoto, babyPhoto, dancePhoto,    campingPhoto));
    

    【讨论】:

      【解决方案2】:

      如果您使用 Objectify、JPA 或 JDO,您将能够存储自己的自定义类型。

      http://objectify-appengine.googlecode.com/

      【讨论】:

        【解决方案3】:

        ""实体具有命名属性,其值可以是基本类型或基本类型的集合。当然,如果序列化为字节数组,则可以存储更丰富的对象,尽管这可能会阻止这些属性的有效查询。 "

        您似乎只能在数据存储 api 中存储基本类型的列表。

        【讨论】:

        • 你在这个答案和我发布的答案之间有什么区别?您还可以存储序列化对象的列表。
        【解决方案4】:

        您绝对可以存储列表 - 我认为是任何 Collection。您可以在列表存储后在列表中进行搜索,但存在一些意想不到的限制和行为。

        当然,您可以存储任何可以序列化为字节的用户定义的类,但您将无法对它们进行索引以搜索其成员或任何内容。

        【讨论】:

        • 感谢 Riley,这绝对是有道理的,这将得到支持。我对抛出的异常感到困惑(要检查一下,然后看看是什么原因造成的)和指南中没有提到对象和集合......
        • 是的...它在指南中的某处提到它,但我也无法快速找到它。奇怪:o
        • 您可以存储数据存储的本机类型的集合。您看到的错误是由自定义“用户”类型引起的,而不是由 ArrayList 引起的。您必须明确地将其序列化为 Blob 值。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        • 2013-11-14
        • 2010-10-30
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多