quinta-feira, 19 de abril de 2012

Re: [java-br] Erro ao mapear ManyToMany com JPA 2 EclipseLink

·

 

Boa tarde pessoal!

Só pra deixar
registrado, caso alguém tenha a mesma dificuldade, eu consegui
resolver meu problema de mapear many-to-many em entidades com pkey
compostas da seguinte forma:

tabela_a ---->
tabela_a_b <------ tabela_b

Na entidade da
tabela_a_b eu criei as duas pkey, mas só defini uma como ID da
entidade.
Na entidade da tabela_a
eu fiz;

@JoinColumn(name =
"ida", referencedColumnName = "ida")
@OneToOne()
private TabelaAB
tabelaAB;

e na tabela_a_b

@OneToOne(cascade =
CascadeType.ALL, mappedBy = "tabelaAB")
private TabelaA
tabelaA;

@OneToOne(cascade =
CascadeType.ALL, mappedBy = "tabelaAB")
private TabelaB
tabelaB;

o mesmo para a tabela_b
só que com o id da tabela_b

@JoinColumn(name =
"idb", referencedColumnName = "idb")
@OneToOne()
private TabelaAB
tabelaAB;

Não consegui de forma
alguma mapear com @ManyToMany por que as tabelas tinham várias pkey.

Abçs
Bruno Rodrigues
--- Em qua, 18/4/12, Marcus Paulo <mpaulobr@gmail.com> escreveu:

De: Marcus Paulo <mpaulobr@gmail.com>
Assunto: Re: [java-br] Erro ao mapear ManyToMany com JPA 2 EclipseLink
Para: java-br@yahoogrupos.com.br
Data: Quarta-feira, 18 de Abril de 2012, 14:24

Boa tarde Bruno,

qual o erro que aparece?

--
Abraços
Marcus Paulo
Sun Certified Java Programmer 6 (SCJP)
Fotos: www.flickr.com/photos/marcus-paulo/

2012/4/18 Bruno Rodrigues <brunorodrigues197@yahoo.com.br>

> **
>
>
> Boa tarde grupo.
>
> Novamente estou
> escrevendo por um problema com JPA.
>
> Eu tenho duas tabelas
> que se relacionam many-to-many através de uma terceira tabela. Até
> ai tranquilo, só que ambas as tabelas possuem chave primaria
> compostas.
> Já tentei usando ManyToMany pra ligar direto as duas
> tabelas e criando essa terceira entidade para fazer um ManyToOne e
> depois OneToMany (Como segue o exemplo), mas em todos os casos o
> problema é o mesmo. Ele diz que preciso declarar todas as chaves
> primarias com o JoinColumns, mas eu só tenho uma chave primaria em
> comum nas tabelas, então, quando executo uma consulta dá uma
> Exception dizendo que as outras duas chaves não foram encontradas na
> tabela intermediaria.
>
> Alguém já passou por
> isso e teria algumas ideia?
> Vou escrever as classes
> do cenário e as tabelas do banco seguem a mesma logica.
>
> public class TabelaA
> implements Serializable {
> @EmbeddedIdprotected TabelaAPK
> tabelaAPK;
> @OneToMany(cascade =
> CascadeType.ALL, mappedBy = tabelaA")private List<TabelaC>
> tabelaCList;
>
> … }
>
> public class TabelaAPK
> implements Serializable {
> @Column(name = "ida") private int ida; @Column(name =
> "idoutro") private int
> idoutro; @Column(name =
> "idmaisum") private int
> idmaisum;
>
> … }
>
> O mesmo para a tabela B
>
> public class TabelaB
> implements Serializable {
> @EmbeddedIdprotected TabelaBPK
> tabelaBPK;
> @OneToMany(cascade =
> CascadeType.ALL, mappedBy = tabelaB")private List<TabelaC>
> tabelaCList;
>
> … }
>
> public class TabelaBPK
> implements Serializable {
> @Column(name = "idb") private int idb; @Column(name =
> "idqualquer") private int
> idqualquer; @Column(name =
> "idoutroqualquer") private int
> idoutroqualquer;
>
> … }
>
> E a tabela que une as
> duas
>
> public class TabelaC {
>
> @ManyToOne(fetch=FetchType.LAZY)
>
> @JoinColumn(name="ida", referencedColumnName="ida",
> insertable=false,updatable=false )
> private TabelaA
> tabelaA;
>
> @ManyToOne(fetch=FetchType.LAZY)
>
> @JoinColumn(name="idb",referencedColumnName="idb",insertable=false,updatable=false)
>
> private TabelaB
> tabelaB;
>
> }
>
> [As partes desta mensagem que não continham texto foram removidas]
>

>

[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-brLinks do Yahoo! Grupos

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
SUPEROFERTA HP 4430s

Não passe mais um Dia dos Namorados sozinho(a). Conheça o Y! Encontros.

Quantidade ou qualidade? No Y!Encontros vc encontra de tudo um pouco.
.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog