Relação Ternária no Hibernate

7 respostas
bcartaxo

Ola pessoal,

Alguém sabe como o Hibernate trata relações ternárias? Teriam exemplos?

No meu caso tenho um relação ternária da seguinte forma: Usuário tem um nível de acesso em um projeto. Usuário, nível de acesso e projeto são entidades persistentes da aplicação.

Flw pessoal.

7 Respostas

cv1

Isso me parece um has-one simples. Voce pode ser mais especifico?

bcartaxo

Tem-um?? Acho q não. Se não fossem entidades persistentes e ficassem somente no nível da aplicação eu modelaria usando o seguinte atributo na classe usuário: Map<Projeto, NivelAcesso>. Isso seria um tem-um??? Afinal para cada projeto um usuário tem um e somente um niível de acesso. Em termos de BD eu crio uma tabela em separado assim:

usuario(FK)(PK)
projeto(FK)(PK)
nivelAcesso(FK)

Como faria isso com JPA? O provider é o Hibernate.

pablofaria

Isso seria uma chave composta no banco?

bcartaxo

Sim… seria uma chave composta (id_projeto, id_usuario).

pablofaria

Voce terá que fazer uma classe a parte para a chave composta anotada com @Embeddable

@Embeddable  
public class ItensPedidoPK implements Serializable {  

   @Column(name = "pedido_id", nullable = false)  
   private int pedidoID;  
   
   @Column(name = "item_pedido", nullable = false)  
   private int itemPedidoID;

e na sua classe

@Entity  
public class ItensPedido implements Serializable {  

   @EmbeddedId  
   protected ItensPedidoPK itensPedidoPK;

espero ter ajudado…

bcartaxo

Vlw kra… ajudou sim, qt a questão das chaves compostas, porém ainda resta a dúvida da relação ternária =P

pablofaria

Quando for relação ternaria, na classe que representa seu ID crie tres atributos…

Criado 9 de março de 2008
Ultima resposta 10 de mar. de 2008
Respostas 7
Participantes 3