Olá pessoal,
Tenho uma dúvida utilizando Enum com JPA.
Utilizei alguns tópicos daqui do guj mesmo para saber como funcionava Enum com o JPA.
Funcionou 50% com o que eu precisava.
Eu tenho um Enum com todos os estados brasileiros + DF e tenho uma tabela de ibge no banco onde eu futuramente vou utilizar para outros meios e fins.
Na tabela eu quero salvar exatamente como está vindo do Enum(a UF).
Quando estou utilizando o Enum na persistência, está sendo salvo na tabela a posição do enum e não propriamente o conteúdo.
Segue a forma como estou utilizando:
public enum Estados {
AC, AL, AP, AM,
BA, CE, DF, ES,
GO, MA, MT, MS,
MG, PA, PB, PR,
PE, PI, RJ, RN,
RS, RO, RR, SC,
SP, SE, TO
}
Aqui onde chamo a tabela(removi os demais campos, só deixei o campo que estou com problema)
public class Ibge {
private Estados estado;
@Enumerated(EnumType.STRING)
public Estados getEstado() {
return estado;
}
public void setEstado(Estados estado) {
this.estado = estado;
}
}
E aqui o meu TesteDAO antes de colocar para a tela em si fazer o que precisa(novamente, removi os campos que eu não estou com problemas, só estou mostrando o estado):
public class TesteIbge {
public static void main(String[] args) throws Exception {
Ibge i = new Ibge();
i.setEstado(SP);
IbgeDAO dao = new IbgeDAO();
i = dao.salvar(i); //Insert
}
}
O que eu encontrei nos tópicos que visualizei(por exemplo esse aqui: Mapear Enum JPA) é bem parecido com o que eu preciso, mas, lá não teve uma resolução ‘legal’.
Eu até tentei colocar o meu Enum usando uma ‘descrição’ :
AC("AC"), AL("AL"), AP("AP"), AM("AM"),
BA("BA"), CE("CE"), DF("DF"), ES("ES"),
GO("GO"), MA("MA"), MT("MT"), MS("MS"),
MG("MG"), PA("PA"), PB("PB"), PR("PR"),
PE("PE"), PI("PI"), RJ("RJ"), RN("RN"),
RS("RS"), RO("RO"), RR("RR"), SC("SC"),
SP("SP"), SE("SE"), TO("TO");
Mas, o resultado é o mesmo.
Me desculpem se há outra forma de fazer isso mais fácil e melhor, essa foi a melhor que encontrei fuçando, já que é a primeira vez que mecho com isso.
Poderiam ajudar?
Obrigado.