Estou com uma duvida, nao estou conseguindo fazer funcionar as minhas classes Enum usando JDBC,
os classes Enums funcionam normalmente usando o JDBC ou só com o JPA?
Obrigado.
Estou com uma duvida, nao estou conseguindo fazer funcionar as minhas classes Enum usando JDBC,
os classes Enums funcionam normalmente usando o JDBC ou só com o JPA?
Obrigado.
Poderia ser mais claro um pouco no problema que você está encontrando? Pois me parece algo simples, dependendo da forma como tu estás persistindo o enum.
Na verdade me parece simples até independente da forma, pois se for um relacionamento um para um com uma outra entidade e o enum for uma coluna numa tabela, tu simplesmente pega o valor da coluna e gera o enum especifico:
[code]
enum Apple {
A, B, C, D, E
}
public class MainClass {
public static void main(String args[])
{
Apple ap;
System.out.println("Here are all Apple constants");
Apple allapples[] = Apple.values();
for(Apple a : allapples)
System.out.println(a);
System.out.println();
ap = Apple.valueOf("C");
System.out.println("ap contains " + ap);
}
}[/code]
Só um exemplo que eu peguei da internet onde usam o valueOf para gerar o enum desejado. Ali tu substituiria com o valor recuperado da coluna. Para os outros relacionamentos (1 pra n, etc.) seria a mesma coisa…
Isso se o enum estiver com sendo persistido como String, se tiver sendo sendo persistido como número daí vai ter q tratar um pouco diferente, mas nada demais tb…
Na verdade nem sei se é o enum msm a causa do problema, deu um erro aqui que eu nao sei qual é, achei que pudesse ser o enum, no sistema ta assim:
criei uma classe enum:
[code]package sgia.enums;
public enum TipoCadastro {
CLIENTE, FUNCIONARIO, FORNECEDOR
}
[/code]
e na hora da inserção eu tratei o enum da seguinte forma:
assim esta correto?
É mas fácil vc colar o erro ai.
Você tem algumas possibilidades.
Aí fica assim:
[code]
public enum TipoCadastro {
CLIENTE(1), FUNCIONARIO(2), FORNECEDOR(3);
private int id;
private TipoCadastro(int id) {
this.id = id;
}
public int getId() { return id; }
public static TipoCadastro porId(int id) {
for (TipoCadastro c : values()) {
if (c.getId() == id) return c;
return null;
}
}
} [/code]
Aí vc salva só o ID no JDBC:
E carrega assim:
O id pode parecer redundante com o ordinal, mas não é. Você com o tempo, você pode decidir apagar um item do enum, ou incluir um no meio, e aí a ordem dos demais irá mudar, mas o ID não.
tem como eu declarar uma variavel em uma classe enum?
da erro nessa declaração de variavel :x
Tem sim.
Que erro?
Consegui resolver cara, brigado =)