Tipo enumerados em classes de persistência

Amigos, estou com uma dúvida cruel.

  1. tem uma entidade de domínio ( persistência usando hibernate ).
public class Pessoa {
    
    int id;
    String nome;
    Situacao situacao;
    TipoPessoa tipo;
    String email;
    String site;
    String pseudonimo;
    String pronuncia;
    
    enum Situacao { 
	ATIVO ('A'), 
	INATIVO ('I');
	
	private char situacao;
	
	Situacao(char situacao){
	    this.situacao = situacao;
	}
	
	public char getSituacao(){
	    return this.situacao;
	}
	
    };
    
    enum TipoPessoa { 
	FISICA ('F'), 
	JURIDICA ('J');
	
	private char tipo;
	
	TipoPessoa(char tipo){
	    this.tipo = tipo;
	}
	
	public char getTipo(){
	    return this.tipo;
	}
	
    };

    
}
  1. quando o hibernate fizer a persistência dos dados ele vai saber pegar o valor correto da enumeration ( no caso do TipoPessoa ‘F’ ou ‘J’ ) para gravar no banco ou ele vai gravar a constante ?

  2. se tiver errado, alguém pode me ajudar, dizendo qual é a melhor forma de fazer isto?

  3. eu devo colocar na classe de persistencia ou na classe de negócio?

agradeço desde já,

:wink:

Utilize:


enum DiaUtil { SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA; }

@Enumerated
private DiaUtil dia;

Por padrão, hibernate vai usar a seleção ordinal - 0 para Segunda, 1 para Terça, e assim por diante. Mas você pode alterar isso pelas propriedades da annotations.

Rodrigo

como eu faço isso, você teria um exemplo ?

Não kra, eu sempre deixei EnumeratedType.ORDINAL. Apesar de ter mencionado no post anterior, não dá pra fazer exatamente o que você quer com as annotations, porque os únicos tipos possíveis são EnumType.ORDINAL e EnumType.STRING - o segundo usa o proprio nome da constante enum para diferenciar cada campo.

enum TipoPessoa { PessoaFisica, PessoaJuridica }

// vai persistir esse campo como "PessoaFisica" ou "PessoaJuridica"
@Enumerated( EnumType.STRING )
private TipoPessoa tipo;

Isso que você está fazendo, eu normalmente faço usando herança, de PF/PJ para Pessoa…

Rodrigo

Saudações,

Seria possível um exemplo de persistência de um tipo enumerado ???

exemplo entidade com propriedade enumerada …

exemplo de teste persistindo instâncias da entidade com tipo enumerado (CRUD). Para que possamos ver o comportamento de persistência e recuperação desses objetos.

Antecipamente meus agradecimetos.