Spring Data JDBC 是否支持自定义类型转换器

Does Spring Data JDBC support custom type converters

我有一个实体,其文件类型为 java.util.Date(或 Timestamp,这与案例无关)。

public class StatusReason {
    @Column("SRN_ID")
    private Long id;
    @Column("SRN_CREATOR")
    private String creator;
    @Column("SRN_REASON")
    private String reason;
    @Column("SRN_STATUS")
    private String status;
    @Column("SRN_TIMESTAMP")
    private Date timestamp;
//getters, setters, etc...
}

数据库为Oracle,对应列为TIMESTAMP(6) WITH TIME ZONE

类型

当我调用存储库的任何默认 findByIdfindAll 方法时,我得到: ConverterNotFoundException: No converter found capable of converting from type [oracle.sql.TIMESTAMPTZ] to type [java.util.Date].

我可以为该类型创建自定义 RowMapper,它会正常工作。 我只是想知道是否可以注册一个自定义转换器(在我的例子中是从 oracle.sql.TIMESTAMPTZjava.util.Date)所以仍然可以从默认映射中受益并在整个应用程序中使用转换器。

您可以通过继承 JdbcConfiguration (Spring Data JDBC v1.x) or AbstractJdbcConfiguration (v2.x). Then overwrite the method jdbcCustomConversions() 的配置来注册自定义转化。

JdbcCustomConversionsConverter 的列表作为参数。