java - AppEngine 数据存储 : storing list of strings with more than 500 characters

标签 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 访问它们。

最佳答案

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

  1. 短文本字符串索引属性,最多可存储 500 个字符。在 Java 中,它被转换为 String
  2. 长文本字符串未索引属性,最多可存储 1MB 的字符。在 Java 中,它被转换为 Text

在您的情况下,解决方案是迭代列表并将 Text 替换为其字符串值:

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

关于java - AppEngine 数据存储 : storing list of strings with more than 500 characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20047079/

相关文章:

gwt - 如何将 gwt 复合小部件更改事件分组为一个更改事件

java - 文本位置边界框 PDFBox

google-app-engine - 父/祖先关系的引用属性?

gwt - 将点击监听器添加到 gwt 的 Grid 行

google-app-engine - 通过 SSL 的 Appengine 数据?

python - appengine 数据存储 - 按字符串或整数过滤

java - 开发模式下的 GWT 刷新周期

java - 如何结束程序,并阻止用户收到提示?

java - 如何反序列化 JSON HashMap<String, Object>?

java - 如何在组件绘制时创建 "please wait"Swing 对话框