Java googleappengine字符串到文本

Java googleappengine字符串到文本,java,google-app-engine,Java,Google App Engine,我有一个实体字段,它已经作为字符串保存在数据存储中。appengine中的字符串最多可包含500个字符 如何将其更改为文本并使所有旧值仍然可用?您必须使用db.TextProperty,但无法为该属性编制索引 要使用它: class Example(db.Model): .... content = db.TextProperty() content_text = db.Text(example.content) or example.content = db.Tex

我有一个实体字段,它已经作为字符串保存在数据存储中。appengine中的字符串最多可包含500个字符


如何将其更改为文本并使所有旧值仍然可用?

您必须使用db.TextProperty,但无法为该属性编制索引

要使用它:

class Example(db.Model):
    ....
    content = db.TextProperty()



content_text = db.Text(example.content) 

or

example.content = db.Text(content_text)

对于这样的任务,我使用了一个带有action参数的servlet来执行db操作。在您的情况下,更新实体类,遍历实体并相应地设置值。

我推荐以下方法,尤其是在代码正在生产的情况下:

  • 在实体中引入新的文本字段
  • 编写一个简单的迁移代码,遍历每个实体,然后从String属性中读取现有值,并将其放入新的Text属性中
  • 将当前代码修改为仅从新文本属性中写入和读取

上述方法将帮助您逐步完成工作,在出现问题的最坏情况下,至少您拥有旧属性和旧值

只需将字段提取为文本即可。它会起作用的。无需将现有值迁移到新字段和所有字段

在java中,还有一个com.google.appengine.api.datastore.Text:Text字符串,最长可达1兆字节。是的,问题是我需要新的insert包含文本,并使以前的字符串仍然可以读取。请记住,TextProperty不能被索引