如何解决java 15 纳秒精度导致 Linux 环境出现问题
我们已将我们的应用更新到 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 举报,一经查实,本站将立刻删除。