问题描述
我们已将我们的应用更新到 Java 15,系统时钟到纳秒精度 (https://bugs.openjdk.java.net/browse/JDK-8242504) 的新增强与 Postgres 中的 TIMESTAMP 限制不兼容。时间因底层操作系统而异,Mac (Big Sur) 中的 Instant 不以纳秒为单位给出时间,但在 Linux 中给出。
我们在我们的代码库中使用 Instant 类型。我们的测试正在比较内存中 Instant 类型的对象与获取的对象,因此它们会根据运行的操作系统而失败。
在 Linux 中,内存中的 Instant 对象的精度为纳秒,而 Postgres 存储的 Instant (TIMESTAMP) 的精度为微秒。断言失败:
java.lang.AssertionError: expected [2021-01-04T19:32:23.726475249Z] but found [2021-01-04T19:32:23.726475Z]
在 Mac 中,Instant 对象的精度为微秒,与 Postgres 的 Timestamp 精度完全一致,因此测试像迄今为止一样通过。
我们希望避免截断 Instant 或向 PG 添加插件以支持纳秒。
有人可以为此问题提供更优雅的解决方案吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)