【发布时间】:2021-11-15 07:11:38
【问题描述】:
对于 jooq 3.13.x,我们正在使用
Field<Instant> midPointDueTime = TICKET.READY.plus(TICKET.DUE.minus(TICKET.READY).div(2));
其中 READY 和 DUE 字段的类型为 java.time.Instant。它们是数据库中的 DATETIME 字段(通常是 java.sql.Timestamp),但使用 javax.persistence.AttributeConverter 转换为 Instant。有问题的数据库是 Informix,但我们现在正在使用带有 DEFAULT 方言的开源版本的 jooq,并试图避免出现偏离标准 SQL 语法的情况。
从该字段声明 jooq 3.13.x 创建以下 SQL sn-p,它按预期工作
TICKET.READY + ((TICKET.DUE - TICKET.READY) / 2))
这是预期的 DATETIME 算法。我们正在寻找介于 READY 和 DUE 之间的时间戳。
但是 jooq 3.14 或 3.15 都会抛出运行时异常。
org.jooq.exception.DataTypeException:无法从 2(java.lang.Integer 类)转换为 java.time.LocalDateTime 类
没有生成 SQL,所以我认为这不是 Informix 兼容性问题。错误发生在记录任何 SQL 语句之前。
这可能是一个错误,或者我可以做些什么来获得相同的日期算术结果?
【问题讨论】:
-
“错误发生在任何 SQL 语句被记录之前。” - 如果您认为这是一个错误,请在此处报告:github.com/jOOQ/jOOQ/issues/new/choose
标签: jooq