【问题标题】:How do I write data in my Google App Engine Datastore to com.google.appengine.api.datastore.Text如何将我的 Google App Engine 数据存储区中的数据写入 com.google.appengine.api.datastore.Text
【发布时间】:2010-03-11 04:45:53
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:
    setMethod(new Text(longStringValue));
    
    String value = text.getValue();
    

    如果您尝试将现有的 String 列更新为 Text,那么我不确定这是否受支持。您可以尝试将列类型从 String 更改为 Text 并查看它是否仍然加载(我可以想象这可能有效,如果有效,请告诉我们)。如果没有,您需要添加一个新列并让您的应用程序适当地合并它们。

    【讨论】:

    • 当我尝试得到以下错误时:“java.lang.String cannot be cast to com.google.appengine.api.datastore.Text”
    • "try that" = 将列更改为文本?太糟糕了。在这种情况下,您需要创建一个新列并保留旧列,并让您​​的实体将其数据从旧的 String 列缓慢迁移到新的 Text 列。
    • 你是对的。那里有具有旧数据类型的实体的事实引起了它的悲痛。创建一个新列并慢慢移动是正确的解决方案。谢谢。
    • 如果 GAE/J (DataNucleus?) 自动支持 Text 和 String 之间的转换(只要满足长度限制),那该有多酷。将使架构迁移更容易。
    • 更改列类型应该可以正常工作。文本和字符串之间的唯一区别是它们是否被索引。
    【解决方案2】:

    将 String 类型转换为我使用的 com.google.appengine.api.datastore.Text 类型

    Text myText = new Text(myString);
    

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 2013-04-29
      • 1970-01-01
      • 2016-01-18
      • 2011-02-16
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多