Поддерживает ли 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 в качестве аргумента.

Другие вопросы по тегам