春天的数据DomainClassConverter不工作(结合Java的配置)(Spring Dat

2019-07-31 13:39发布

我试图建立的数据春/ JPA DomainClassConverter自动转换(串)的ID域类本身。

我的项目是使用Java配置(所以没有XML)。

在我的WebConfig我目前有:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new DomainClassConverter<DefaultFormattingConversionService>((DefaultFormattingConversionService) registry));
    }
}

这似乎已成功挂钩的DomainClassConverter因为我可以看到它在转换服务中打印时:

ConversionService converters =
  ..<default converters>..
  org.springframework.data.repository.support.DomainClassConverter@6ea4ce0d, org.springframework.core.convert.support.IdToEntityConverter@5d3f03b, org.springframework.core.convert.support.ObjectToObjectConverter@1d40b47a

但提交嵌套形式(订单与客户参考)时,客户不会自动转换,因此我得到一个:

Failed to convert property value of type java.lang.String to required type org.mycomp.domain.Customer for property customer; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.mycomp.domain.Customer] for property customer: no matching editors or conversion strategy found

我想知道如果我做错了什么吗?

Answer 1:

DomainClassConverter应被声明为一个bean(因为它ApplicationContextAware ),它在自身注册ConversionService自动,让您无需手动注册它:

@Bean @Autowired
public DomainClassConverter domainClassConverter(ConversionService cs) {
    return new DomainClassConverter(cs);
}


Answer 2:

唯一的例外是告诉你,你需要一个自定义转换器把字符串转换成客户。 你必须来标记输入,并将其映射到客户领域。 这对所有的域类真。

谷歌搜索也使我在春天论坛线程:

http://forum.springsource.org/showthread.php?122944-Help-with-DomainClassConverter-configuration

这表明,有可能是一个错误,这取决于你使用的春季版本。



文章来源: Spring Data DomainClassConverter not working (in combination with Java Config)