我有一个实体,它有一个 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:找不到能够从类型 [oracle.sql.TIMESTAMPTZ] 转换为类型 [java.util.Date] 的转换器
。
我可以为该类型创建自定义 RowMapper
,它会正常工作。
我只是想知道是否可以注册自定义转换器(在我的例子中是从 oracle.sql.TIMESTAMPTZ
到 java.util.Date
)所以仍然可以从默认设置中受益在整个应用程序中映射和使用转换器。
最佳答案
您可以通过从 JdbcConfiguration
继承您的配置来注册自定义转换(Spring Data JDBC v1.x) 或 AbstractJdbcConfiguration
(v2.x)。然后覆盖方法jdbcCustomConversions()
.
JdbcCustomConversions
将 Converter
列表作为参数。
关于java - Spring Data JDBC是否支持自定义类型转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53120420/