Да, это возможно.
Вам необходимо предоставить конвертеры от Inner
до String
и обратно.
В вашей конфигурации контекста приложения зарегистрируйте bean-компонент для jdbcCustomConversions
:
@Bean
CustomConversions jdbcCustomConversions() {
return new JdbcCustomConversions(asList(InnerToString.INSTANCE, StringToInner.INSTANCE));
}
Определите ссылочные преобразователи следующим образом:
@WritingConverter
enum InnerToString implements Converter<Inner, String> {
INSTANCE;
@Override
public String convert(Inner inner) {
return inner == null ? null : inner.value;
}
}
@ReadingConverter
enum StringToInner implements Converter<String, Inner> {
INSTANCE;
@Override
public Inner convert(String source) {
Inner inner = new inner();
inner.value = source;
return inner;
}
}
Преобразователи не должны быть перечислениями, но нет смысла иметь более одного экземпляра, если преобразователь не параметризован.
Аннотации @WritingConverter
и @ReadingConverter
важны, поскольку они контролируют, используются ли конвертеры при записи в базу данных или чтении из базы данных.
Обратите внимание, что это работает для классов, которые хранятся в одном столбце.
Правильные встроенные объекты, которые отображаются в списке столбцов, пока не поддерживаются. См. DATAJDBC-111 .