jOOQ的记录映射器转换器失去时间戳精度



我在数据库中有一个类型为timestamp的列,其精度有时为纳秒,最高可达6位数字,例如2012-09-17 18:47:52.123456,我正设法在jOOQrecord中成功检索到该列的值(即以正确的精度(。然而,当使用into方法将该jOOQrecord转换为POJO时,该值映射到LocalDateTime,其中时间戳分数的分数被减少到3,即2012-09-17 18:47:52.123

不确定我是做错了什么,还是这是一个真正的问题。我只是想问,除了实现自定义转换器外,还有其他解决方案可以实现吗?例如配置?

很明显,jOOQ 3.15.1、3.14.13中有一个错误,应该修复:https://github.com/jOOQ/jOOQ/issues/12225

反射转换不是调用保持纳秒精度的Timestamp::toLocalDateTime,而是首先提取Timestamp::getTime(毫秒精度的时间戳(,然后将其转换为LocalDateTime,有效地将时间戳截断为TIMESTAMP(3)

如果您在代码生成器中使用SQLDataType.LOCALDATETIME数据类型,则不会发生这种情况,这只是使用这种反射逻辑的Record.into(Class)调用的产物。

最新更新