com.googlecode.objectify.LoadException:时间戳超出范围错误

问题描述 投票:0回答:1

在我的数据存储中,时间戳以某种方式保存为Integer,类似于-8499613106649。阅读该实体时,Objectify抛出以下异常:

com.googlecode.objectify.LoadException: Error loading Key{projectId=**********}]}: timestamp out of range: 8499613106648, 250560000

我试图在@onLoad方法中修改时间戳,并在Integer的末尾附加l,以便它不会引发异常。但这无法正常工作,因为实体无法加载。

是否有办法在加载或捕获异常之前修改时间戳,并修改时间戳并保存到数据存储区?

java google-cloud-platform timestamp google-cloud-datastore objectify
1个回答
0
投票

这很奇怪-如果发布完整的堆栈跟踪信息可能会有所帮助。我很好奇该消息的来源。

[有几种方法可以处理“我的数据存储中有什么问题”。

  • 将字段的类型更改为Long(或String或其他类型),并在getter方法中转换为Date / Instant / every。以正确的格式重新保存数据后,您可以还原更改。

  • 为此类型编写您自己的Translator,以接受更慷慨的输入。查看Objectify源代码中的现有翻译器。

  • 使用低级API重写“损坏的”数据。

我选择哪种方式取决于代码库以及对数据进行funk处理的难度。

© www.soinside.com 2019 - 2024. All rights reserved.