我们已经将我们的应用程序更新到Java15,并将系统时钟的新增强功能提高到纳秒精度(https://bugs.openjdk.java.net/browse/jdk-8242504 )与postgres中的时间戳限制不兼容。时间根据底层操作系统的不同而不同,mac(big-sur)中的instant不提供纳秒级的时间,但linux中提供纳秒级的时间。
我们在代码库中使用即时类型。我们的测试是比较内存中的instant类型的对象和fetched类型的对象,因此它们会失败,这取决于它们运行的操作系统。
在linux中,内存中的instant对象的精度为纳秒,而postgres存储的instant(时间戳)的精度为微秒。Assert失败:
java.lang.AssertionError: expected [2021-01-04T19:32:23.726475249Z] but found [2021-01-04T19:32:23.726475Z]
在mac中,instant对象的精度为微秒,这与postgres的时间戳精度完全一致,因此测试的通过与迄今为止的测试一样。
我们希望避免截断instant或向pg添加插件以支持纳秒。
有人能为这个问题提供一个更优雅的解决方案吗?
暂无答案!
目前还没有任何答案,快来回答吧!