Fala pessoal, tudo bem? Beem … estou com mais um probleminha, dessa vez com a chave estrangeira
Esta apresentando um erro ao tentar adicionar fala que precisa converter para uma string, mostrarei a seguir, primeiro segue minhas classes:
Classe modelo Residuo
@Entity
@Table(name = "residuo")
public class Residuo {
@Id
@GeneratedValue
private Integer id;
private String descricao;
private String classe;
//Outros atributos do tipo String, Getters e Setters
Classe modelo Geracao
@Entity
@Table(name = "geracao")
public class Geracao {
@Id
@GeneratedValue
private Integer id;
private String data;
@ManyToOne
private Residuo residuos;
//Outros atributos Getters e Setters
public Residuo getResiduos() {
return residuos;
}
public void setResiduos(Residuo residuos) {
this.residuos = residuos;
}
Trecho do código na página JSP que lista os residuos cadastrados previamente
<td><select name="residuos">
<option value=""> </option>
<c:forEach var="residuo" items="${dao.lista}">
<option value="${residuo.id}">${residuo.descricao}</option>
</c:forEach>
</select></td>
Método que é chamado na ação do formulário, ou seja, ao clicar o botão gravar na interface Web
[code]
public String gravar(Geracao geracao) {
EntityManager em = new JPAUtil().getEntityManager();
GeracaoDAO dao = new GeracaoDAO(em);
em.getTransaction().begin();
ResiduoDAO resDao = new ResiduoDAO(em);
Residuo residuo = resDao.getBusca(geracao.getResiduos().getId());
residuo.setId(geracao.getResiduos().getId());
residuo.setDescricao(geracao.getResiduos().getDescricao());
residuo.setCodonu(geracao.getResiduos().getCodonu());
residuo.setUm(geracao.getResiduos().getUm());
geracao.setResiduos(residuo);
dao.getAdiciona(geracao);
em.getTransaction().commit();
em.close();
return "redirect:cadastroGeracao";
}[/code]
A idéia era montar o objeto Residuo correspondente ao residuo que foi selecionado na interface gráfica web atravéz de um combo box e então seta-lo como residuo da geração para salvar como chave estrangeira na tabela geracao, porém ao tentar salvar é apresentado o seguinte erro:
[code]type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object ‘geracao’ on field ‘residuos’: rejected value [1]; codes [typeMismatch.geracao.residuos,typeMismatch.residuos,typeMismatch.br.com.e2sconsultoria.gerenciamentoe2s.modelo.Residuo,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [geracao.residuos,residuos]; arguments []; default message [residuos]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘br.com.e2sconsultoria.gerenciamentoe2s.modelo.Residuo’ for property ‘residuos’; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [br.com.e2sconsultoria.gerenciamentoe2s.modelo.Residuo] for property ‘residuos’: no matching editors or conversion strategy found]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:681)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object ‘geracao’ on field ‘residuos’: rejected value [1]; codes [typeMismatch.geracao.residuos,typeMismatch.residuos,typeMismatch.br.com.e2sconsultoria.gerenciamentoe2s.modelo.Residuo,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [geracao.residuos,residuos]; arguments []; default message [residuos]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘br.com.e2sconsultoria.gerenciamentoe2s.modelo.Residuo’ for property ‘residuos’; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [br.com.e2sconsultoria.gerenciamentoe2s.modelo.Residuo] for property ‘residuos’: no matching editors or conversion strategy found]
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:810)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.[/code]
Alguém tem ideia do que posso fazer para corrigir isso?