Converter Integer

Olá, estou com o seguinte problema:

Tenho uma classe Região:

public class Regiao implements Serializable {
    
    @Id
    private Integer regiao;
    
    private boolean status;
    
    @ManyToOne
    private Departamento departamento;

E tenho no JSP um combobox que lista a qual departamento essa região irá fazer parte:

<select name="departamento">
   <c:forEach items="${listaDepartamentos}" var="obj" >
      <option value="${obj.id}">${obj.sigla}</option> 
   </c:forEach>                        
</select>

Quando eu preencho os dados de cadastro de região, e envio para a controladora, que acessa a dao, e acessa a classe, me dá erro de conversão, acredito eu porque o dado q está sendo enviado do combobox é um Integer, e no setDepartamento da classe Região está assim:

    public void setDepartamento(Departamento departamento) {
        this.departamento = departamento;
    }

Ou seja, o atributo aí é do tipo Departamento, e não recebe um Integer.
Já tive o mesmo problema com Datas, mas era só converter a String recebida em uma Data.
Mas como eu faria aqui, pra converter o Integer para Departamento?

Fiz um teste trocando na classe o tipo Departamento para Integer, ficando assim:

public class Regiao implements Serializable {
    
    @Id
    private Integer regiao;
    
    private boolean status;
    
    private Integer departamento; //mudado para Integer

    ....

    public void setDepartamento(Integer departamento) {
        this.departamento = departamento;
    }

E cadastrou beleza!!! O problema está na questão de ser um Integer e ser um Departamento.

Espero ter sido claro no problema… e poder contar com a ajuda de alguém.
Abaixo segue o erro q dá no browser na hora de cadastro, abraço a todos.

com o indice recebido, você procura o departamento correspondente.

você deve em algum lugar do projeto possuir um método que retorne o departamento de acordo com o índice selecionado na página jsp. O método setDepartamento ficaria algo assim:

public void setDepartamento(int departamento) {  

Departamento dep = new Departamento;

//classe dao, que possui um método que retorna do banco o departamento
//correspondente ao indice passado por parâmetro

dep = dao.buscarDepartamento(int);

this.departamento = dep;  
}  

espero ter ajudado, por favor poste o resultado

Olá amigo, testei a sua dica, já tinha feito algo parecido anteriormente.

Mas qd eu faço isso:

dep = dao.buscarDepartamento(int);

Aparece isso:

É isso que ele não está aceitando, atribuir um tipo Integer a um tipo Departamento.

não estou entendendo onde que está ocorrendo esse erro, primeiro deixa eu corrigir dois erros meu, o certo é:

Departamento dep = new Departamento(); dep = dao.buscarDepartamento(departamento);

gostaria que você postasse a implementação do seu método buscarDepartamento, ele deve retornar um departamento.

se possível poste também um pouco mais da exception, para que eu veja onde está ocorrendo o erro.

Vou conferir amanhã e te dou retorno se deu ou não!!!
Valeu pela atenção!!!

Estou postando aí as classes Regiao, Departamento, DaoRegiao, DaoDepartamento, ControlaRegiao e o jsp de Cadastro de Região.

Aguardo seu contato e espero que essas informações possam ser úteis para poder me ajudar!

Regiao

package entidades;

import dao.DaoRegiao;
import java.io.Serializable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Regiao implements Serializable {
    
    @Id
    private Integer regiao;
    
    private boolean status;
    
    @ManyToOne
    private Departamento departamento;
    
    public Regiao() {
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.getId() != null ? this.getId().hashCode() : 0);
        return hash;
    }
    
    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Regiao)) {
            return false;
        }
        Regiao other = (Regiao)object;
        if (this.getId() != other.getId() && (this.getId() == null || !this.getId().equals(other.getId()))) return false;
        return true;
    }
    
    @Override
    public String toString() {
        return "entidades.Regiao[id=" + getId() + "]";
    }
    
    public Integer getId() {
        return getRegiao();
    }
    
    public void setId(Integer regiao) {
        this.setRegiao(regiao);
    }
    
    public boolean isStatus() {
        return status;
    }
    
    public void setStatus(boolean status) {
        this.status = status;
    }
    
    public Departamento getDepartamento() {
        return departamento;
    }
    
    public void setDepartamento(Departamento departamento) {
        this.departamento = departamento;
    }
    
    public Integer getRegiao() {
        return regiao;
    }
    
    public void setRegiao(Integer regiao) {
        this.regiao = regiao;
    }
    
}

Departamento

package entidades;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.Generated;

@Entity
public class Departamento implements Serializable {
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;    
    
    private String campo;
    private String sigla;
    
    public Departamento() {
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.getId() != null ? this.getId().hashCode() : 0);
        return hash;
    }
    
    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Departamento)) {
            return false;
        }
        Departamento other = (Departamento)object;
        if (this.getId() != other.getId() && (this.getId() == null || !this.getId().equals(other.getId()))) return false;
        return true;
    }
    
    @Override
    public String toString() {
        return "entidades.Departamento[id=" + getId() + "]";
    }
      
    public String getCampo() {
        return campo;
    }
    
    public void setCampo(String campo) {
        this.campo = campo;
    }
    
    public String getSigla() {
        return sigla;
    }
    
    public void setSigla(String sigla) {
        this.sigla = sigla;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    
    public Integer setIdReg(Integer idr) {
        return idr;
    }
}

DaoRegiao

package dao;

import banco.Banco;
import entidades.Regiao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

public class DaoRegiao {
    
    private EntityManager em;
    private Query q;
    
    public DaoRegiao() {
        em=Banco.getInstancia().getEm();
        q=em.createQuery("FROM Regiao obj order by obj.regiao");
    }
    
    public Regiao get(Integer id){
        em.clear();
        em.getTransaction().begin();
        Regiao obj;
        obj = em.find(Regiao.class, id);
        em.getTransaction().commit();
        return obj;        
    }
    
    public List<Regiao> select(){
        em.clear();
        em.getTransaction().begin();
        List lista=q.getResultList();
        em.getTransaction().commit();
        return lista;
    }
    
    public void saveOrUpdate(Regiao obj){
        em.clear();
        em.getTransaction().begin();
        em.merge(obj);
        em.getTransaction().commit();
    }
    
    public void delete(Regiao obj){
        em.clear();
        em.getTransaction().begin();
        obj=em.find(Regiao.class,obj.getId());
        if (obj!=null){
            em.remove(obj);
        }
        em.getTransaction().commit();
    }
    
}

DaoDepartamento

package dao;

import banco.Banco;
import entidades.Departamento;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

public class DaoDepartamento {
    
    private EntityManager em;
    private Query q;
    
    public DaoDepartamento() {
        em=Banco.getInstancia().getEm();
        q=em.createQuery("FROM Departamento obj order by obj.id");
    }
    
    public Departamento get(Integer id){
        em.clear();
        em.getTransaction().begin();
        Departamento obj;
        obj = em.find(Departamento.class, id);
        em.getTransaction().commit();
        return obj;        
    }
    
    public List<Departamento> select(){
        em.clear();
        em.getTransaction().begin();
        List lista=q.getResultList();
        em.getTransaction().commit();
        return lista;
    }
    
    public void saveOrUpdate(Departamento obj){
        em.clear();
        em.getTransaction().begin();
        em.merge(obj);
        em.getTransaction().commit();
    }
    
    public void delete(Departamento obj){
        em.clear();
        em.getTransaction().begin();
        obj=em.find(Departamento.class,obj.getId());
        if (obj!=null){
            em.remove(obj);
        }
        em.getTransaction().commit();
    }
    
}

ControlaRegiao

package controle;

import dao.DaoDepartamento;
import dao.DaoRegiao;
import entidades.Departamento;
import entidades.Regiao;

import java.io.*;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.jasper.runtime.JspRuntimeLibrary;

public class ControlaRegiao extends HttpServlet {
    
    private DaoRegiao daoRegiao;
    private DaoDepartamento daoDepartamento;
    
    public ControlaRegiao(){
        daoRegiao = new DaoRegiao();
        daoDepartamento = new DaoDepartamento();
    }
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        String acao=request.getParameter("acao");
        String pagina="listar.jsp";
        
        if ("incluir".equals(acao)){
            Regiao obj=new Regiao();
            JspRuntimeLibrary.introspect(obj,request);
            daoRegiao.saveOrUpdate(obj);
            if (obj!=null){
                pagina="listar.jsp";
            }
        }
        
        if ("excluir".equals(acao)){
            Regiao obj=new Regiao();
            JspRuntimeLibrary.introspect(obj,request);
            obj=daoRegiao.get(obj.getId());
            
            if (obj!=null){
                daoRegiao.delete(obj);
                pagina="listar.jsp";
            }
        }
        
        if ("alterar".equals(acao)){
            Regiao obj=new Regiao();
            JspRuntimeLibrary.introspect(obj,request);
            obj=daoRegiao.get(obj.getId());
            request.setAttribute("regiao",obj);
            if (obj!=null){
                pagina="alterar.jsp";
            }
        }
        
        if ("salvar".equals(acao)){
            Regiao obj=new Regiao();
            JspRuntimeLibrary.introspect(obj,request);
            daoRegiao.saveOrUpdate(obj);
            if (obj!=null){
                pagina="listar.jsp";
            }
        }
        
        if ("cadastrar".equals(acao)){
            pagina="cadastrar.jsp";
        }
        
        if ("localizar".equals(acao)){
            pagina="localizar.jsp";
        }
        
        List <Regiao> regioes = daoRegiao.select();
        List <Departamento> departamentos = daoDepartamento.select();
         
        request.setAttribute("listaRegioes",regioes);
        request.setAttribute("listaDepartamentos",departamentos);
        
        request.getRequestDispatcher(pagina).forward(request,response);
    }
   + HttpServlet methods. Click on the + sign on the left to edit the code.
}

Cadastro de Região

<html>
    <head>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <title>Clube On-Line</title>
        <link rel="stylesheet" type="text/css" href="../css/crud.css" />
        <script type="text/javascript" src="../js/cancelarCad.js"></script>
    </head>
    
    <body>
        <div id="principal">
            <tt>Cadastro de Região<tt>
            </br></br>
            
            <form action="index.jsp" method="POST">
                <input type="hidden" name="acao" value="incluir" />
                <table border="0">
                    
                    
                    <tr>
                        <td class="estilotd">Região:</td>
                        <td><input type="text" name="regiao" size="52" maxlength="50" value="" /></td>
                    </tr>
                    <tr>
                        <td class="estilotd">Status:</td>
                        <td>
                            <input type="radio" name="status" value="TRUE" checked="checked" /> Ativo
                            <input type="radio" name="status" value="FALSE" /> Inativo
                        </td>
                    </tr>
                    <tr>
                        <td class="estilotd">Campo:</td>
                        <td>
                            <select name="departamento">
                                <c:forEach items="${listaDepartamentos}" var="obj" >
                                    <option value="${obj.id}">${obj.sigla}</option> 
                                </c:forEach>                        
                            </select>
                        </td>
                    </tr>
                    
                    
                    <tr>
                        <td></td>
                        <td>
                            <div align="right">
                                <a  ><img  ></a>
                                <input type="image" src="../imagens/cadastrar.gif">
                            </div>
                        </td>
                    </tr>
                </table>
            </form>
            
        </div>
    </body>
</html>