【问题标题】:GAE Datastore "java.lang.IllegalArgumentException: Property `${property}' contains an invalid nested entity."GAE 数据存储“java.lang.IllegalArgumentException:属性‘${property}’包含无效的嵌套实体。”
【发布时间】:2021-05-29 00:32:29
【问题描述】:

在过去几天开始收到一个错误,将嵌套地图结构作为嵌入式实体保留。它很早就工作了,没有任何问题。

java.lang.IllegalArgumentException: Property metrics contains an invalid nested entity.
    at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:49)
    at com.google.appengine.api.datastore.DatastoreApiHelper$1.convertException(DatastoreApiHelper.java:127)
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:97)
    at com.google.appengine.api.datastore.Batcher$ReorderingMultiFuture.get(Batcher.java:115)
    at com.google.appengine.api.datastore.FutureHelper$TxnAwareFuture.get(FutureHelper.java:171)
    at com.googlecode.objectify.cache.TriggerFuture.get(TriggerFuture.java:100)
    at com.googlecode.objectify.impl.ResultAdapter.now(ResultAdapter.java:34)

该属性也已未编入索引。从技术上讲,它应该忽略 1500 字节的限制。我认为他们做了一些改变来限制这一点。

此错误未在任何地方记录。

【问题讨论】:

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


    【解决方案1】:

    在嵌入式地图中,您不能使用包含点的键,这些键在新 API 中具有特殊含义。如果你的键中必须有点,你可以使用 @Stringify Stringifier 来转义它们

    如果您要持久化嵌入式地图,请进行清理以避免此类异常。

    在这里找到原因:https://github.com/objectify/objectify/wiki/UpgradeVersion5ToVersion6

    【讨论】:

      【解决方案2】:

      此错误的一个原因可能是您直接发送 protobuf 并序列化了一些根本不是有效实体的字节。

      【讨论】:

      • 感谢分享。找到原因会在这里分享。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      相关资源
      最近更新 更多