coleções de UserType no hibernate

5 respostas
Paulo_Silveira

Oi pessoal

Estou usando hibernate3 com anotacoes e tem um workaround legal para usar enumeracoes: usar um UserType que na verdade grava um Varchar ou int com o .name() ou .ordinal() da constante.

Isso ta funcionando diretinho, mas se eu quero guardar um Set ele pede para que minhaEnum seja @Entity. Alguem que ja criou outros UserTypes sabe como fazer para trabalhar com coleções deles?

5 Respostas

mister_m

Paulo,

Você poderia explicar como pretende persistir sua Enum de modo que ela realmente não seja uma entidade?

Paulo_Silveira

Oi Michael, ta ai:

http://hibernate.org/312.html

bem simples e direto… cria um campo int… tem uma versao varchar pra nao ficar dependente de .ordinal() que muda conforme a ordem da declaracao.

mister_m

Paulo Silveira:
http://hibernate.org/312.html

bem simples e direto… cria um campo int… tem uma versao varchar pra nao ficar dependente de .ordinal() que muda conforme a ordem da declaracao.

Hmmm, não era isso que eu queria saber, Paulo (inclusive, temos um EnumType no genesis, s]o que pro Hibernate 2). Eu queria entender como você quer ter uma Collection que não é na realidade uma entidade. Por isso, queria entender como isso vai ser persistido no banco (por exemplo, numa tabela à parte, assim e assim…), pra ver se realmente o que você explicou é o que você precisa.

Paulo_Silveira

entendi!

queria que ele criasse uma tabela associativa… um ID e VARCHAR mais foreign pra outra tabela…

posso fazer um workaround que seria um wrapper da enum neh?

@Entity
class Wrapper {
    @Type(class="...")
   MinhaEnum x;
}

que acha? ai eu teria uma colecao da wrapper.

mister_m

Pois é, só que isso não seria um workaround e sim o jeito “correto” de fazer.

Na verdade, se você quisesse usar uma chave composta (o que não é recomendado), seu wrapper poderia simplesmente ser a enum e a FK para a entidade principal. Note que o que você sugeriu agora reflete seu modelo relacional. O fato é que o Hibernate não tem como relacionar sua entidade pai com a Collection sem que haja uma chave em algum lugar.

Criado 2 de agosto de 2005
Ultima resposta 3 de ago. de 2005
Respostas 5
Participantes 2