使用带有 postgres 驱动程序的 NamedParameterJdbcTemplate 保存具有 java.time.Instant 属性的实体

Jes*_*son 6 postgresql spring-jdbc

我在使用 NamedJdbcTemplate 保存具有即时值的实体时遇到问题。我收到下面列出的异常,我正在尝试确定解决此问题的最佳方法。请指教。

无法推断用于 java.time.Instant 实例的 SQL 类型。使用带有显式 Types 值的 setObject() 来指定要使用的类型。

我正在使用postgresql:9.4.1212驱动程序

小智 1

这段代码对我有用:

Instant ts = // whatever instant
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("ts", Timestamp.from(ts), Types.TIMESTAMP);

jdbcTemplate.queryForList(SQL, params)
Run Code Online (Sandbox Code Playgroud)

其中 SQL 是参数化查询,并确保您使用的是 java.sql.Timestamp 和 java.sql.Types。