Hibernate e Enum  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
leonardocfmg
Debugger

Membro desde: 24/01/2007 10:30:37
Mensagens: 69
Localização: Muriaé - MG
Offline

O problema:

Vocês podem ver que tenho um atributo do tipo enum Status { ATIVO, INATIVO; }, mas o campo da minha tabela somente aceita um caracter CHAR(1).

Minha tentativa foi redefinindo o metódo toString(), executando no java puro até que funciona, quando o hibernate vai persistir o Enum ele não utiliza o método toString() e grava { ATIVO ou INATIVO} e não { A ou I }.

Alguém já implementou ou resolveu algo como isso!

Analisem os códigos abaixo:




This message was edited 1 time. Last update was at 09/01/2009 13:31:46

thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Hum, o contrário de "ATIVO" é "INATIVO" e o contrário de "ATIVADO" é "DESATIVADO".
"DESATIVO" é um verbo ("eu desativo uma bomba"), mas acho que o padrão para nomes de enums é um substantivo ou um adjetivo.

Note que o UserType, dado como exemplo, que persiste enums ( http://www.hibernate.org/265.html ) usa o método "name" (que vai retornar "ATIVO" ou "DESATIVO" - argh) e não o método "toString" para persistir enums; talvez seja necessário criar um outro UserType. OK?
[WWW]
leonardocfmg
Debugger

Membro desde: 24/01/2007 10:30:37
Mensagens: 69
Localização: Muriaé - MG
Offline

thingol wrote:Hum, o contrário de "ATIVO" é "INATIVO" e o contrário de "ATIVADO" é "DESATIVADO".
"DESATIVO" é um verbo ("eu desativo uma bomba"), mas acho que o padrão para nomes de enums é um substantivo ou um adjetivo.

Note que o UserType, dado como exemplo, que persiste enums ( http://www.hibernate.org/265.html ) usa o método "name" (que vai retornar "ATIVO" ou "DESATIVO" - argh) e não o método "toString" para persistir enums; talvez seja necessário criar um outro UserType. OK?




Examinei o código do link, mas não funcionou, como o método name() é final, aí que está o problema, não consigo redefini-lo!

This message was edited 1 time. Last update was at 09/01/2009 15:18:25

thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

O método "name" é final e não pode ser redefinido, então você teria de ter um outro UserType, cujo código é o mesmo exceto pelo fato de você ter de trocar "name" por "toString".
[WWW]
DSergio
Entusiasta Java

Membro desde: 08/06/2006 17:32:39
Mensagens: 23
Offline

Oi Leonardo!

Já resolveu seu problema com user type?
Se não me passa outro post acho que tenho uma solução pra você.

OCPJP 6
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team