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
类型
当我调用存储库的任何默认 findById
或 findAll
方法时,我得到:
ConverterNotFoundException: No converter found capable of converting from type [oracle.sql.TIMESTAMPTZ] to type [java.util.Date]
.
我可以为该类型创建自定义 RowMapper
,它会正常工作。
我只是想知道是否可以注册一个自定义转换器(在我的例子中是从 oracle.sql.TIMESTAMPTZ
到 java.util.Date
)所以仍然可以从默认映射中受益并在整个应用程序中使用转换器。
您可以通过继承 JdbcConfiguration
(Spring Data JDBC v1.x) or AbstractJdbcConfiguration
(v2.x). Then overwrite the method jdbcCustomConversions()
的配置来注册自定义转化。
JdbcCustomConversions
将 Converter
的列表作为参数。
我有一个实体,其文件类型为 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
当我调用存储库的任何默认 findById
或 findAll
方法时,我得到:
ConverterNotFoundException: No converter found capable of converting from type [oracle.sql.TIMESTAMPTZ] to type [java.util.Date]
.
我可以为该类型创建自定义 RowMapper
,它会正常工作。
我只是想知道是否可以注册一个自定义转换器(在我的例子中是从 oracle.sql.TIMESTAMPTZ
到 java.util.Date
)所以仍然可以从默认映射中受益并在整个应用程序中使用转换器。
您可以通过继承 JdbcConfiguration
(Spring Data JDBC v1.x) or AbstractJdbcConfiguration
(v2.x). Then overwrite the method jdbcCustomConversions()
的配置来注册自定义转化。
JdbcCustomConversions
将 Converter
的列表作为参数。