在我的数据存储中,时间戳被保存为一个整数,类似这样 -8499613106649
. 在读取该实体时,objectify引发以下异常:
com.googlecode.objectify.LoadException: Error loading Key{projectId=**********}]}: timestamp out of range: 8499613106648, 250560000
我试图修改文件中的时间戳 @onLoad
方法并附加 l
在整数的末尾,这样它就不会抛出异常。但它不工作,因为实体无法加载。
有没有一种方法可以在加载之前修改时间戳,或者捕获异常并修改时间戳并保存到数据存储?
1条答案
按热度按时间yrwegjxp1#
这很奇怪-如果你发布完整的stacktrace可能会有所帮助。我很好奇是什么引起了这个消息。
有几种方法可以处理“我的数据存储中有一些讨厌的东西”。
在getter方法中,将字段的类型改为long(或string或其他类型),并转换为date/instant/whatever。以正确格式保存数据后,可以还原更改。
写你自己的
Translator
对于这种接受更慷慨投入的类型。查看objectify源代码中的现有翻译器。使用低级api重写“损坏的”数据。
我选择哪一个取决于代码库和数据去恐惧的难度。