javasf@googlegroups.com
[Top] [All Lists]

Re: [javasf] Re: manytomany

Subject: Re: [javasf] Re: manytomany
From: Roberto Vezzoni
Date: Sun, 4 Apr 2010 22:20:57 -0300
Sim, exato! com o java.util.Set será criada sua PK com as duas colunas, etretanto se você precisar amarrar essas coleções em algum componente <h:dataTable .../> o seu container vai pular no teto e voltar gritando no momento de uso (runtime), pois só são permitidos arrays, instâncias de java.util.List e javax.faces.model.DataModel como valores naquele componente (se me lembro bem).

O que faço para "contornar" esse problema é aplicar mais alguns metadados naquela anotação dominante da relação entre as duas classes:

    @JoinTable(name = "teste",
               joinColumns = {
        @JoinColumn(name = "MODULO_ID")},
               inverseJoinColumns = {
        @JoinColumn(name = "CONTROLE_ACESSO_ID")},
               uniqueConstraints = {
        @UniqueConstraint(columnNames = {"MODULO_ID", "CONTROLE_ACESSO_ID"})})
    private List<TipoControleAcesso> tiposControleAcesso;

Assim, ele continuará a não criar a PK mas será criado um índice único para as duas colunas, que no frigir dos ovos faz o mesmo comportamento de uma PK.

:o)

Sds,

2010/4/2 Rodrigo Mendonça <denoww@xxxxxxxxx>
Depois de ficar a TARDE TODA quebrando a cabeça, está aqui a solução. era só trocar Collection por Set... isso me custou a tarde toda =/
Dessa forma as primary keys são criadas normalmente

Confiram abaixo


MANYTOMANY JPA HIBERNATE POSTGRE

Na entidade TipoControleAcesso

@ManyToMany(mappedBy="tipoControleAcesso")
private Set<Modulo> modulo; 


na Entidade Modulo

@ManyToMany
@JoinTable(name="teste")
private Set<TipoControleAcesso> tipoControleAcesso = new HashSet<TipoControleAcesso>();

O postgre está criando a tabela teste com as chaves primárias de cada uma das entidades, porém só cria os dois campos. O postgree fica me mandando alerta que não existe chave primária da entidade criada. Alguém se meu mapeamento está incorreto?



Em 2 de abril de 2010 16:09, Rodrigo Mendonça <denoww@xxxxxxxxx> escreveu:

MANYTOMANY JPA HIBERNATE POSTGRE

Na entidade TipoControleAcesso

@ManyToMany(mappedBy="tipoControleAcesso")
private Collection<Modulo> modulo; 


na Entidade Modulo

@ManyToMany
@JoinTable(name="teste")
private Collection<TipoControleAcesso> tipoControleAcesso;

O postgre está criando a tabela teste com as chaves primárias de cada uma das entidades, porém só cria os dois campos. O postgree fica me mandando alerta que não existe chave primária da entidade criada. Alguém se meu mapeamento está incorreto?

--
http://groups.google.com/group/javasf
 
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to javasf@xxxxxxxxxxxxxxxx



--
Roberto Vezzoni
SCJP6

http://www.vexit.com.br

--
http://groups.google.com/group/javasf
 
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to javasf@xxxxxxxxxxxxxxxx
<Prev in Thread] Current Thread [Next in Thread>