如何在控制器

时间:2017-08-16 12:19:21

标签: hibernate spring-mvc

我有两种方法可以在银行中创建数据,一种创建公寓,另一种创建居民,并在创建居民时使用公寓的数据。

在将公寓设置为居民时,我使用spring mvc的convert实现从id更改为string。

但是当我创建公寓时,如果转换器的实现在我的类中扩展了WebMvcConfigurerAdapter。我无法创建公寓,因为同样无法将id保存为数据库中的字符串。

如何禁用转换的实现,并仅在调用创建居民的方法时使用它。

这是我的转换器类

@Component 
public class AddApartConverter implements Converter<Object, Apartamento> {

    @Autowired(required = false) 
    ApartamentoService apartamentoService; 

    public Apartamento convert(Object element) { 
        if (element == null) { return null; } 
        Integer id = Integer.parseInt((String) element); 
        Apartamento apartamento = apartamentoService.findById(id);
        return apartamento; 
    } 
}

这是错误

  

org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleTypeMismatch

     

警告:无法绑定请求元素:org.springframework.beans.TypeMismatchException:无法将[br.com.grandvalley.pub.model.Apartamento]类型的值转换为所需类型[br.com.grandvalley.pub。 model.Apartamento];嵌套异常是org.springframework.core.convert.ConversionFailedException:无法从类型[br.com.grandvalley.pub.model.Apartamento]转换为类型[@javax.validation.Valid br.com.grandvalley.pub.model。公寓价值&#39;公寓[id = null,bloco = 1,apartamento = 101]&#39;嵌套异常是java.lang.ClassCastException:br.com.grandvalley.pub.model.Apartamento不能强制转换为java.lang.String

这就是我需要做的事情

如果我放入实现WebMvcConfigurerAdapter的类

@Override
Public void addFormatters (FormatterRegistry registry) {
Registry.addConverter (addApartConverter);
}

公寓:

创建公寓的方法不起作用,并显示提到的转换错误。

如果我对这段代码发表评论,那就是创建公寓的方法。

居住:

如果数据库中有公寓,我只能注册居民。

如果我在数据库中插入以创建公寓。

通过选择来自数据库列表的公寓来注册居民,该寄存器有效,因为它将公寓ID转换为字符串。

因此,要使公寓注册工作,它不能将公寓ID转换为字符串

我需要的是转换不是通过创建公寓的方法来调用的。只有在创造居民时才会被召唤

0 个答案:

没有答案