[RESOLVIDO]Mapear Conjunto de Enums

6 respostas
P

Pessoal,

Eu tenho as seguintes classes:

public class Perfil {
 
	/*
	 * Variáveis de instância
	 */
	
	private Long id;
	private String nome;
	private String descricao;
	private Collection<Acesso> acessos;
	 
	/*
	 * Getters e setters
	 */
	
	... 
}
public enum Acesso {
 
	/*
	 * Conjunto de Acessos
	 */
	INCLUIR_FUNCIONARIO ("Incluir Funcionário"),
	ALTERAR_FUNCIONARIO ("Alterar Funcionário"),
	DESABILITAR_FUNCIONARIO ("Desabilitar Funcionário"),

	/*
	 * Variável de instância
	 */
	private String descricao;

	/*
	 * Construtor
	 */
	private Acesso(String descricao) {
		this.descricao = descricao;
	}

	/*
	 * Sobrescrita do método toString() herdado de Object
	 */
	@Override
	public String toString() {
		return descricao;
	}
	 
}

Ou seja, um Perfil possui um conjunto de Acessos, que são um Enum. Minha dúvida é: quando uma classe possui um atributo Enum, basta usar a annotation @Enumerated. Mas e quando ela possui um conjunto de enums? ? Como mapear?

6 Respostas

P

Pessoal,

Problema resolvido. Pesquisando no fórum do Hibernate, achei um link sobre o assunto. Anotei a minha coleção de enums da seguinte forma:

@CollectionOfElements
@JoinTable(name = "acessos", joinColumns = {@JoinColumn(name = "id_perfil")})
@Cascade(value = CascadeType.DELETE_ORPHAN)
@Enumerated(value = EnumType.STRING)
@Column(name = "acesso")

Fica aí a dica para quem tiver o mesmo problema!

P

Fala cara,

A tabela Acessos tem duas colunas: id_perfil e acesso. Id_perfil recebe (claro) o id do Perfil. Ja acesso recebe o String representando o Acesso.

P

Isso aí…

theBalrog

E cara…

Só uma dúvida…
Na prática, na sua tabela, quais seriam os valores?

Um abraço

theBalrog

Hmm

Então na prática, essa a coluna string dessa tabela de perfil teria valores sendo o toString das enums? tipo: INCLUIR_FUNCIONARIO, etc…

theBalrog

Entendido…
Obrigado…

Agora começa a fazer algum sentido utilizar enums pra valores de domínio… rsss

Um abraço

Criado 25 de novembro de 2008
Ultima resposta 26 de nov. de 2008
Respostas 6
Participantes 2