我的 GWT 实体包含一个属性 myDescriptions
,它是一个包含 10 个字符串的列表,其中更多字符串的长度可能超过 500 个字符。
当我尝试为列表中的任何元素(例如元素 3)赋予值时,可能会发生两种情况:
- myDescriptions.get(3) = stringWithLessThan500Chars;
-> 正确完成
- myDescriptions.get(3) = stringWithMoreThan500Chars;
-> 它存储为 元素 9(最后一个)作为 datastore.Text
。
有什么解决办法吗?我尝试将 myDescriptions 创建为 datastore.Text
列表,但无法从 EntityProxy
访问它们。
最佳答案
GAE 有两个数据存储类型的字符串属性:
- 短文本字符串索引属性,最多可存储 500 个字符。在 Java 中,它被转换为
String
- 长文本字符串未索引属性,最多可存储 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/