Поддерживает ли Spring Data JDBC пользовательские преобразователи типов? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть объект, который имеет поле типа 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 Ответ

0 голосов
/ 02 ноября 2018

Вы можете зарегистрировать пользовательские преобразования, унаследовав свою конфигурацию от JdbcConfiguration и переписав метод jdbcCustomConversions().

JdbcCustomConversions принимает список Converter в качестве аргумента.

...