JPA - ManyToMany, não funciona, help-me?[Resolvido]

9 respostas
rbroz85

Bom dia senhores!

nao to conseguindo usar o manytomany

Viagens v = new Viagens();
        String msg = "";
        v.setDatacomeco(viagensDataIni.getDate());
        v.setDatafim(viagensDataFim.getDate());
        v.setLocal(viagensLocal.getText());
        v.setObs(viagensObs.getText());
        v.setUfsIdufs(new Ufs(viagensUf.getSelectedIndex()+1));
        
        List<Aferidor> li = (List<Aferidor>) new ControlListAferidor().seachtoObj(jListAferidores);
        
        v.setAferidorIdaferidorCollection(li);

eu mando ele fazer um merge do obgeto acima!
mas ele so altera a tabela viagem!
a tabela de relacionamento entre viagem e averidor
nada eh modificado!

o que eu faço?

obrigado

9 Respostas

nbluis

Dá uma olhada no atributo cascade da anotação @ManyToMany.

rbroz85

esta assim:

@ManyToMany(mappedBy = "viagensIdviagensCollection")
    private Collection<Aferidor> aferidorIdaferidorCollection;

o que devo fazer ?

S

Defines a many-valued association with many-to-many multiplicity. If the Collection is defined using generics to specify the element type, the associated target entity class does not need to be specified; otherwise it must be specified.
Every many-to-many association has two sides, the owning side and the non-owning, or inverse, side. The join table is specified on the owning side. If the association is bidirectional, either side may be designated as the owning side.

The same annotation elements for the OneToMany annotation apply to the ManyToMany annotation.

Example 1:

In Customer class:

@ManyToMany
@JoinTable(name="CUST_PHONES")
public Set getPhones() { return phones; }

In PhoneNumber class:

@ManyToMany(mappedBy="phones")
public Set getCustomers() { return customers; }

Example 2:

In Customer class:

@ManyToMany(targetEntity=com.acme.PhoneNumber.class)
public Set getPhones() { return phones; }

In PhoneNumber class:

@ManyToMany(targetEntity=com.acme.Customer.class, mappedBy="phones")
public Set getCustomers() { return customers; }

Example 3:

In Customer class:

@ManyToMany
@JoinTable(name="CUST_PHONE",
    joinColumns=
        @JoinColumn(name="CUST_ID", referencedColumnName="ID"),
    inverseJoinColumns=
        @JoinColumn(name="PHONE_ID", referencedColumnName="ID")
    )
public Set getPhones() { return phones; }

In PhoneNumberClass:

@ManyToMany(mappedBy="phones")
public Set getCustomers() { return customers; }

Since:
Java Persistence 1.0

Documentação da JPA de @ManytoMany, eles tem exemplos e tals, é bem legal.

nbluis

Seta o atributo cascade para algum desses tipos descritos aqui, de acordo com a sua necessidade.

ok?

Att;

nbluis

nbluis:

Seta o atributo cascade para algum desses tipos descritos aqui, de acordo com a sua necessidade.

ok?

Att;


Desconsidere… isso é pra cascade… teu caso é outro…

rbroz85

ferrou entao… qual eh o meu caso ??? ^^

lol

Obrigado

nbluis

É o exemplo que o amigo due acima…
@JoinTable.

Att;

rbroz85

Eu realmente ainda nao entendi como fazer!

estou usando o netBeans para gerar minhas classes de persistencia!
tudo funciona mt bem, menos o ManyToMany.

bem eu tenho a seguinte situação:

|Viagens| 1---------N |viaafer| N-------1 |aferidor|

o netbeans nao mapeou a tabela viaafer
somente viagens e aferidor,

o que devo fazer ?

obrigado
desculpe minha ignorancia

rbroz85

opa blz consegui resolver,
se nao fosse vcs nao teria conseguido!
muito obrigado!!!

|Viagens| 1---------N |viaafer| N-------1 |aferidor|

o netbeans faz o jointable

no obj aferidor!
eu tirei e coloquei em viagens ! ai funcionou !
show de bola !!!
perfeito e redondinhu !!!

mt obrigado !!!

Criado 11 de setembro de 2008
Ultima resposta 11 de set. de 2008
Respostas 9
Participantes 3