Persistencia de ENUM, EnumType.ORDINAL  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
alexswb
JavaChild
[Avatar]

Membro desde: 28/04/2006 11:46:26
Mensagens: 133
Offline

@Column(name = "CS_CACHORRO", length = 1)
@Enumerated(EnumType.ORDINAL)
private TipoCachorro tipoCachorro;

public enum TipoCachorro {
NAOINFORMADO(9, "PASTOR ALEMÃO"),
NAOINFORMADO(20, "NAO INFORMADO"),

eetc....
}


Estou com um problema. Usei as anotações jpa acima. Só que fazendo isso é gravado a posição do atributo no Enum e não o código.

Como faço para gravar o código?
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Internamente o JPA pega o valor do retorno do método XXXEnum.ordinal(). Como você não consegue sobrescrever esse método, terá que usar o ordinal do Enum, que é o sequencial da ordem dos valores.

O mesmo vale para o EnumType.STRING que pega retorno do método XXXEnum.name().

O que você pode fazer, só que assim seu código terá que ser especifico para a implementação JPA, que é criar um UserType (no caso do Hibernate) para salvar esse enum.

This message was edited 1 time. Last update was at 11/11/2009 15:45:07

alexswb
JavaChild
[Avatar]

Membro desde: 28/04/2006 11:46:26
Mensagens: 133
Offline

não existe outra solução?
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

alexswb wrote:não existe outra solução?


Que eu conheça não. Mas tem um livro de receitas bem bom no site do hibernate para solucionar essas questões. Tem vários itens sobre enums e pseudo-enums.

https://www.hibernate.org/37.html

http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
bobmoe
GUJ Ranger
[Avatar]

Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline

o hibernate fornece a interface usertype que permite vc criar seus próprios tipos, ou seja, um converter que é executado quando vc le ou grava do banco:

http://weblog.dangertree.net/2007/09/23/mapping-java-5-enums-with-hibernate/

BOB - Roberto Nogueira - bobmoe.blogspot.com
[WWW] [MSN]
alexswb
JavaChild
[Avatar]

Membro desde: 28/04/2006 11:46:26
Mensagens: 133
Offline

A gente tá usando EclipseLink aqui.
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

alexswb wrote:A gente tá usando EclipseLink aqui.


http://wiki.eclipse.org/Customizing_the_EclipseLink_Application_(ELUG)

http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team