AppEngine数据存储区:存储超过500个字符的字符串列表

时间:2013-11-18 11:51:12

标签: java google-app-engine gwt google-cloud-datastore requestfactory

我的GWT实体包含一个属性myDescriptions,它是一个包含10个字符串的列表,其中包含超过500个字符的字符串。

当我尝试为列表中的任何元素赋值时,比如元素3,可能会发生两件事: - myDescriptions.get(3) = stringWithLessThan500Chars; - >做得对 - myDescriptions.get(3) = stringWithMoreThan500Chars; - >它作为元素9 (最后)存储为datastore.Text

任何解决方案?我尝试将myDescriptions创建为datastore.Text列表,但我无法从EntityProxy访问它们。

1 个答案:

答案 0 :(得分:3)

GAE有两个数据存储类型的字符串属性:

  1. 短文本字符串索引属性,最多可存储500个字符。在Java中,它已转换为String
  2. 长文本字符串无索引属性,可存储最多1MB的字符。在Java中,它被转换为Text
  3. 在您的情况下,解决方案是遍历列表并将Text替换为其字符串值:

    if(myDescriptions.get(x) typeof Text) {
        String text = ((Text) myDescriptions.get(x)).getValue();
        myDescriptions.set(x, text);
    }