在我的数据存储中,时间戳以某种方式保存为Integer,类似于-8499613106649
。阅读该实体时,Objectify抛出以下异常:
com.googlecode.objectify.LoadException: Error loading Key{projectId=**********}]}: timestamp out of range: 8499613106648, 250560000
我试图在@onLoad
方法中修改时间戳,并在Integer的末尾附加l
,以便它不会引发异常。但这无法正常工作,因为实体无法加载。
是否有办法在加载或捕获异常之前修改时间戳,并修改时间戳并保存到数据存储区?
这很奇怪-如果发布完整的堆栈跟踪信息可能会有所帮助。我很好奇该消息的来源。
[有几种方法可以处理“我的数据存储中有什么问题”。
将字段的类型更改为Long(或String或其他类型),并在getter方法中转换为Date / Instant / every。以正确的格式重新保存数据后,您可以还原更改。
为此类型编写您自己的Translator
,以接受更慷慨的输入。查看Objectify源代码中的现有翻译器。
使用低级API重写“损坏的”数据。
我选择哪种方式取决于代码库以及对数据进行funk处理的难度。