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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...