【发布时间】:2019-04-16 09:51:55
【问题描述】:
使用Spring Data JDBC 我希望将内部变量“inner”映射到外部表中的varchar 列,而不是映射到它自己的表。这可能吗?
public class Outer {
@Id
private String id;
private Inner inner;
}
...
public class Inner {
private String value;
}
...
public OuterRepository implements CrudRepository<Outer, String> {}
这是我的上下文配置:
@Configuration
@EnableJdbcRepositories
public class Config extends JdbcConfiguration {
@Bean
protected JdbcCustomConversions jdbcCustomConversions() {
return new JdbcCustomConversions(asList(StringToInner.INSTANCE, InnerToString.INSTANCE));
}
@WritingConverter
enum InnerToString implements Converter<Inner, String> {
INSTANCE;
@Override
public String convert(Inner source) {
return source.getValue();
}
}
@ReadingConverter
enum StringToInner implements Converter<String, Inner> {
INSTANCE;
@Override
public Inner convert(String source) {
return new Inner(source);
}
}
}
【问题讨论】:
-
我不认为这是 spring data jdbc 直接支持的东西,但也许你可以尝试为你的内部实例使用属性访问并手动处理分配它的字符串值。
标签: spring spring-boot spring-data spring-data-jdbc