我一直试图将LocalDateTime持久化到DB2 10.5中的TIMESTAMP列中,但是失败,并显示以下错误:
[jcc] [1091] [10824] [4.26.14]无效的数据转换:参数实例2020-01-02T12:34:56对于请求的转换无效。错误代码= -4461,SQLSTATE = 42815
我正在使用实现JDBC规范4.1的IBM JDBC驱动程序:“用于JDBC和SQLJ 4.26.14的JDBC驱动程序IBM数据服务器驱动程序。
表定义为:
create table t1 (
id int,
a timestamp
);
Java代码为:
LocalDateTime dt = LocalDateTime.of(2020, 1, 2, 12, 34, 56);
PreparedStatement ps = conn.prepareStatement(
"insert into t1 (id, a) values (?, ?)"
);
int id = 1;
ps.setInt(1, id);
ps.setObject(2, dt); // fails here
ps.execute();
我可以看到它甚至没有涉及到ps.execute()
方法。我已经读过JDBC 4.2驱动程序可以解决此问题,但在任何地方都找不到。
使用setTimestamp(...)
将代码更改为使用setTimestamp(...)
:
Timestamp.valueOf(LocalDateTime dateTime)