Caros Amigos,
Como defino valores para a anotação @Enumerated do JPA.Há alguma documentação oficial para consultas sobre JPA?
Aguardo Resposta.
UM abraço
Caros Amigos,
Como defino valores para a anotação @Enumerated do JPA.Há alguma documentação oficial para consultas sobre JPA?
Aguardo Resposta.
UM abraço
@Enumerated server para você fazer com que o valor X seja um enum, por exemplo
enum Carro { FUSCA(0), GOL(1))
// Implementar construtores e outros métodos chatosde Enum com valores
}
Na tua entidades, vamos supor que seja assim: ID, nome do dono e tipo do carro
@Entity
public class DonoCarro {
@Id
private int id;
@Enumerated
@Column(name="id_carro")
private Carro carro;
private String nome;
// construtores, getters e setters
Algumas observações
- a anotação @Enumerated pode ser especificada se é pra usar ORDINAL ou STRING, depende do que o teu campo retornar
- nesse caso, a tabela DonoCarro tem que ter um campo number(X,0) (onde X é qualquer valor)
- usar enums com entidades é muito legal :P
- o único problema é que, se você possuir entidades fracas e adicionar uma nova no banco de dados, precisará adicionar no enum também :(, por exemplo, digamos que esses carros, no teu sistema sejam fixos. Tem uma tabela lá que é ID e NOME, ou seja, 0 é "Fusca" e 1 é "Gol". Se você adicionar um novo valor nessa tabela, terás que atualizar o sistema e adicionar o novo enum
Obrigado esclareceu minha duvida!!!
Um abraço
Desculpem estar ressucitando esse topico, é que fiquei com uma duvida em relação a isso tambem.
Estou querendo usar Enum para uma coluna de categoria do tipo inteiro,
Gostaria de saber se como faria para pegar a descricao de algum item.
Teria quer ter um metodo getDescricao() com um switch, ou tem algum jeito melhor?
Vlw
você pode sobreescrever o toString() no Enum…
@Override
public String toString() {
return descricao;
}
Certo, mas eu teria que ter um switch para saber qual é o codigo certo?
public String toString(){
switch (codCategoria){
case 0: {
return "cat 1";
}
case 1: {
return "cat 2";
}
}
}
public enum Situacao {
NAO_EXISTE(-1, "Inexistente"),
DISPONIVEL(1, "Adquirido"),
CANCELADO(2, "Cancelado"),
INUTILIZADO(3, "Inutilizado"),
REMESSA(4, "Devolvido ao fabricante"),
VENDIDO(5,"Vendido");
private int codigo;
private String descricao;
private Situacao(int codigo, String descricao) {
this.codigo = codigo;
this.descricao = descricao;
}
public int toInt() {
return this.codigo;
}
public static Situacao valueOf(int i) {
switch (i) {
case -1: return NAO_EXISTE;
case 1: return DISPONIVEL;
case 2: return CANCELADO;
case 3: return INUTILIZADO;
case 4: return REMESSA;
case 5: return VENDIDO;
default: return null;
}
}
@Override
public String toString() {
return descricao;
}
Então, minha duvida eh exatamente essa que você colocou.
Que não sei se funciona e queria entender melhor.
No banco eu só vou salvar os numeros certo?
Como o hibernate vai se achar para salvar ou pegar esse valor no banco? é atraves do valueOf?
Valew
creio que sim, já fiz isso com letras…
Valew, vou testar e qualquer coisa volto aqui.
Muito obrigado pelas rapidas respostas.