Поддерживает ли Spring Data JDBC пользовательские преобразователи типов?
У меня есть объект, который имеет поле типа 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
) так что все еще можете извлечь выгоду из сопоставления по умолчанию и использовать конвертер через все приложение.
1 ответ
Вы можете зарегистрировать пользовательские преобразования, унаследовав свою конфигурацию от JdbcConfiguration
и переписывая метод jdbcCustomConversions()
,
JdbcCustomConversions
занимает список Converter
в качестве аргумента.