如何将数据写入Google App Engine Datastore中的com.google.appengine.api.datastore.Text?

3

我有一个持久化对象,其中包含一个字符串属性,通常超过500个字符。Google App Engine说我需要将其保存为com.google.appengine.api.datastore.Text。

我该如何将String类型转换为com.google.appengine.api.datastore.Text类型,以便在属性上使用setMethod(),或者以其他方式将我的长字符串数据放入该持久化值中?

2个回答

6
setMethod(new Text(longStringValue));

String value = text.getValue();

如果您想将现有的字符串列更新为文本列,则我不确定是否支持。您可以尝试将列类型从字符串更改为文本,然后查看是否仍然加载(我可以想象这可能会起作用,请告诉我们是否有效)。如果不行,您需要添加一个新的列,并让应用程序适当地合并它们。


当我尝试这样做时,我会得到以下错误: “java.lang.String无法转换为com.google.appengine.api.datastore.Text” - Lloyd
"试试那个" = 把该列改成文本格式?很遗憾,这种情况下你需要创建一个新的列,并保留旧列,让实体慢慢从旧的字符串列迁移数据到新的文本列。 - Thilo
你是对的。旧数据类型中存在实体导致了问题。创建一个新列并慢慢迁移是正确的解决方案。谢谢。 - Lloyd
如果GAE/J(DataNucleus?)可以自动支持文本和字符串之间的转换(只要满足长度限制),那就太酷了。这将使模式迁移更加容易。 - Thilo
更改列类型应该可以正常工作。文本和字符串之间唯一的区别是它们是否被索引。 - Nick Johnson

2

为了将String类型转换为com.google.appengine.api.datastore.Text类型,我使用了以下代码:

Text myText = new Text(myString);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接