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

ca1c2owp  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(322)

在我的数据存储中,时间戳被保存为一个整数,类似这样 -8499613106649 . 在读取该实体时,objectify引发以下异常:

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

我试图修改文件中的时间戳 @onLoad 方法并附加 l 在整数的末尾,这样它就不会抛出异常。但它不工作,因为实体无法加载。
有没有一种方法可以在加载之前修改时间戳,或者捕获异常并修改时间戳并保存到数据存储?

yrwegjxp

yrwegjxp1#

这很奇怪-如果你发布完整的stacktrace可能会有所帮助。我很好奇是什么引起了这个消息。
有几种方法可以处理“我的数据存储中有一些讨厌的东西”。
在getter方法中,将字段的类型改为long(或string或其他类型),并转换为date/instant/whatever。以正确格式保存数据后,可以还原更改。
写你自己的 Translator 对于这种接受更慷慨投入的类型。查看objectify源代码中的现有翻译器。
使用低级api重写“损坏的”数据。
我选择哪一个取决于代码库和数据去恐惧的难度。

相关问题