O que usar no hibernate?

10 respostas
dijava

turma to com uma duvida conceitual ! tipo eu tenho um bean Usuario e agora tenho q colocar um TipoUsuario(“super usr”,“usr comum”,“adm”) sendo q um usuario pode ter mais de um tipo, ou seja, um unico usuario pode ser “adm” e “super usr” ou “usr” e “adm” e por ai vai. Sei q tem varias maneiras q eu poderia fzr isso, minhas ideias foram:

1- criar um classe TipoUsuario e mapear com Usuario de @OneToMany!
PROBLEMA = nao sei se tem como, mas como eu colocaria valores pre-definidos usando hibernate?

2- pensei em criar um array de enum(TipoUsuario)!
PROBLEMA = Hibernate nao vai conseguir mapear ! eu acho ? acho tb q nao da para fzr isso no hibernate?

aguem pode dar uma luz, se por exemplo o item 1 é uma boa pratica se for como resolveria o problema descrito, e se o item 2 tb e possivel e como resolver !

10 Respostas

Alexandre_Saudate

dijava:
2- pensei em criar um array de enum(TipoUsuario)!
PROBLEMA = Hibernate nao vai conseguir mapear ! eu acho ? acho tb q nao da para fzr isso no hibernate?

O Hibernate consegue mapear perfeitamente enums. Você só precisa usar a anotação @Enumerated.

[]´s

dijava

sim mas eu preciso de um array de Enum pos pode ter mais de um TipoUsuario selecionado!

finotti

Eu uso da seguinte forma:

@Entity @Table(name="usuario") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "tipo_usuario", discriminatorType = DiscriminatorType.STRING) @DiscriminatorValue("USUARIO") public class Usuario implements Serializable {}

@Entity @DiscriminatorValue("ADMIN") public class UsuarioAdmin extends Usuario {}

@Entity @DiscriminatorValue("CLIENTE") public class UsuarioCliente extends Usuario {}

finotti
E tenho uma Enum com os valores
public enum TipoUsuario {
	
	ADMIN, CLIENTE;

	@Override
	public String toString() {

		switch (this) {

		case ADMIN:
			return "ADMIN";

		case CLIENTE:
			return "CLIENTE";

		default:
			return "";
		}
	}

}
finotti

só agora vi que seu usuário pode ter mais de um “tipo”. :oops:
então essa minha idéia não funciona.

dijava

interessante !!! mas como ficaria a no banco ? uma tabela só com uma coluna com valores separados por alguam char ou uma outra tabela ? como fica ?

dijava

ops desconsidere entao o ultimo post :frowning:

finotti

No exemplo que postei acima, cada usuário pode ter apenas um perfil.
E a tabela “Usuario” tem uma coluna (tipo_usuario) onde é gravado esse perfil.

marcelo.bellissimo

Você quer valores fixos?

Não é melhor uma tabela USUARIO, outra PERFIL (ou tipo, whatever), e uma associativa USUARIO_PERFIL ?
Voce cadastra N usuários, N perfis, e associa o usuário com quantos perfis for preciso.

dijava

eu pensei nisso mas como eu aplico no hibernate ?

Criado 26 de maio de 2010
Ultima resposta 27 de mai. de 2010
Respostas 10
Participantes 4