Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema com enum e jbdc

Olá! Estou com uma pequena dúvida! Tenho o seguinte Enum:

    public enum TipoLocacao {

    PEQ(1), 
    MED(2),
    GRD(3),
    PESADO(4),
    LATARIA(5),
    RADIADOR(6),
    ESCAPAMENTO(7),
    PARA_CHOQUE(8),
    PALHETA(9);

    private Integer tipo;
    TipoLocacao(Integer tipo) {
        this.tipo = tipo;
    }

    public Integer getTipo() {
        return this.tipo;
    }
}

O usuário seleciona esse Tipo em um combobox e salva o Integer da constate no banco de dados.

Mas quando tento recuperar esse valor, ele vem com o número, que está correto já que salvei o número.

Gostaria de saber se consigo através do número salvo no banco, referenciar a constante da minha Enum.

Segue meu método de persistência (Estou usando JDBC não estou usando JPA) :

    public List<Locacao> seleciona() throws Exception {

        List<Locacao> locacoes = new ArrayList<>();
        Connection conn = manager.open();

        @SuppressWarnings("deprecation")
        Locacao loc = new Locacao();

        String sql = "SELECT * FROM LOCACAO";

        try (PreparedStatement stmt = conn.prepareStatement(sql)) {
            try (ResultSet rs = stmt.executeQuery()) {
                while (rs.next()) {
                    loc.setId(rs.getInt("ID"));
                    loc.setAltura(rs.getDouble("ALTURA"));
                    loc.setArea(rs.getString("AREA"));
                    loc.setLargura(rs.getDouble("LARGURA"));
                    loc.setLocal(rs.getString("LOCAL"));
                    loc.setPrateleira(rs.getString("PRATELEIRA"));
                    loc.setProfundidade(rs.getDouble("PROFUNDIDADE"));
                    loc.setRua(rs.getString("RUA"));
                    loc.setTipo(TipoLocacao.valueOf(rs.getString("TIPO")));

                    locacoes.add(loc);
                }
            }
        }
        return locacoes;
    }

Não precisa mandar código pronto ( Mas Se tiver um exemplo agradeço). Apenas quero saber se tem algum método na Enum que posso utilizar para isso ou se preciso criar uma método que faça isso.

Desde já, Agradeço! Abraços!

2 respostas
solução!

Fala ai Williams, de boa ?

Pelo que entendi você salva o numero referente ao tipo do enum, certo ?

Dessa forma você teria que fazer um switch talvez para buscar esse dado, colocaria até dentro do próprio enum.

De Boa Matheus! Valeu pelo retorno! Tinha pensado justamente nisso. Criei um método que faz essa verificação pra mim em uma classe utilitária e funciona normalmente. Valeu. Apenas não queria deixar o código com mal cheiro se tivesse uma algo já pronto no java.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software