Postei na parte de web, porém tenho uma má experiência com a sessão de web pois dentre as dúvidas que postei lá ninguém tentou me ajudar, creio então que estou postando na sessão errada e como venho com uma pergunta que faz relação a banco de dados, achei que aqui seria uma boa área para postar. Bem vamos lá
Estou fazendo um cadastro, no caso um cadastro de geração de resíduos, os resíduos são previamente cadastrados e ao cadastrar a geração deles devo receber um resíduo, ou seja, um objeto resíduo criado, um residuo pode ser gerado de vários lugares, porem cada geração deve possuir apenas um resíduo, então usei a anotação @ManyToOne logo acima da declaração, criando assim uma chave estrangeira para que seja possível acessar dados como por exemplo “Classe do resíduo com geração de id 5”
Esta apresentando um erro ao tentar adicionar fala que precisa converter para uma string, mostrarei a seguir o erro, 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? Espero que aqui alguém possa me ajudar!