Galera, tenho no meu BD um relacionamento (Muitos-para-muitos) entre Aluno e Turma e uma 3 tabela q seria Aluno_Turma onde alem dos campos (cod_aluno e cod_turma) tenho 3 outros (Inicio, fim, valor) qdo for mapear tenho q criar mais 2 classes pois foi o q axei até agora procurando por ai…alguma dica?
Terceira tabela no relacionamento ManyToMany
16 Respostas
Luxu,
Não e necessário criar um mapeamento para a terceira entidade. Você pode realizar o mapeamento das tabelas Aluno e Turma utilizando a propriedade JoinTable apontando para a terceira tabela que no caso seria a tabela associativa.
Luxu,Não e necessário criar um mapeamento para a terceira entidade. Você pode realizar o mapeamento das tabelas Aluno e Turma utilizando a propriedade JoinTable apontando para a terceira tabela que no caso seria a tabela associativa.
Kanin,
Hoje tive o desprazer de conhece-lo em uma reunião, e posso afirmar vc e mala pra cara… oque tem de conhecimento não tem de humildade.
Jovem,
Obrigado em reconhecer as minhas habilidades … Estudei e estudo para cada vez mais ser o melhor profissional.
Outra coisa humildade é para os fracos.
entaum Kanin no alto de sua humildade explique para esse reles mortal como fazer isso q vc postou…
Lixoo …
Humildade é para os melhores …
Quem se acha o melhor, não é realmente !
Se vc realmente estuda para cada vez mais ser o melhor profissional, pode começar tudo de novo.
Cara, conhecimento não é um privilégio e sim uma responsabilidade e só uma pessoa muita forte consegue ser humilde.
Sobre o tópico, se estiver utilizando anotação pode tentar fazer assim
@Entity
public class Aluno implements Serializable {
@ManyToMany(
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
targetEntity = Turma.class
)
@JoinTable(
name="ALUNO_TURMA",
joinColumns=@JoinColumn(name="ALUNO_ID"),
inverseJoinColumns=@JoinColumn(name="TURMA_ID")
)
public Collection getTurmas() {
return turmas;
}
}
@Entity
public class Turma implements Serializable {
@ManyToMany(
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
mappedBy = "turmas",
targetEntity = Aluno.class
)
public Collection getAlunos() {
return alunos;
}
}
Esta é uma relação muito-para-muitos bidirecional, além de colocar a anotação ManyToMany nas duas classes, também é utilizado a anotação JoinTable, caso não seja usada o hibernate irá utilizar a seguinte regra: A tabela de junção terá o nome das duas tabelas separados por um underscore (Aluno_Turma) e o nome das foreign key será alunos_id e turmas_id, outra coisa que também deve ser notado é que um dos lados deve ser o proprietário da relação caso esta seja biderecional, por isso a anotação de JoinTable somente em uma classe.
vlw maykoone, só agora vi pois cheguei da faculdade agora, mas no meu caso tenho mais 3 atributos na terceira tabela(turma_aluno) como ficaria? uso anotaçoes sim, mas naum JPA, ou seja, terei q usar ao invés de CascadeType.PERSIST, CascadeType.MERGE terei q usar CascadeType.SAVE, CascadeType.UPDATE ou nada a ver?
Jovem,
Obrigado em reconhecer as minhas habilidades … Estudei e estudo para cada vez mais ser o melhor profissional.
Outra coisa humildade é para os fracos.
Com toda sua experiência em arquitetura SOA e projetos fora do país, vc deve ter uma porsche cayenne kkkkkkkkkkkk
Não deve passar de um coitado.
Jovem,
Você quase acertou … na minha garagem tem uma vera cruz e uma R1… Se eu vender os dois talvez consiga comprar uma cayane…
Fica ai com o seu palio 1.0 HUMILDE…
Aviso aos amigos humilde … humildade é para os fraco mesmo … Pobre que mora debaixo da ponte …
Eu vi o tópico e ia passar direto, mas resolvi deixar minha opinião, sei que ela não vale nada mesmo.
Parabens kanin por todo o seu crescimento profissional, mas não ignore o crescimento pessoal,
humildade é uma excelente virtude nas pessoas.
Jovem,
Você quase acertou … na minha garagem tem uma vera cruz e uma R1… Se eu vender os dois talvez consiga comprar uma cayane…Fica ai com o seu palio 1.0 HUMILDE…
Aviso aos amigos humilde … humildade é para os fraco mesmo … Pobre que mora debaixo da ponte …
hahaha que lixo, nego come frango e arrota caviar! hahaha
O cara abre o tópico, e em vez da galera ajudar ficam discutindo com um cara que se acha semi-deus.
Mas luxu, você está usando diretamente as anotações do hibernate? porque as anotações que utilizei fazem parte do hibernate-annotations.
Uma alternativa que inclusive eu utilizava era trocar o ManyToMany por um ManyToOne nas duas classes ligadas a uma classe que faria o papel
do JoinTable. exemplo Aluno ManyToOne AlunoTurma, Turma ManyToOne AlunoTurma, ou seja, tu troca o ManyToMany por dois ManyToOne
e se quiser mapear a relação na classe intermediária faz um OneToMany para Aluno e um para Turma.
Jovens,
não irei discutir com você sobre o meu comportamento pessoal… aliais o meu terapeuta é muito bem remunerado para me dizer estas coisas…
Reforço que humildade é para os fracos… O meu network no Brasil e na Europa responde por mim …
sem mais
Jovens,
não irei discutir com você sobre o meu comportamento pessoal… aliais o meu terapeuta é muito bem remunerado para me dizer estas coisas…Reforço que humildade é para os fracos… O meu network no Brasil e na Europa responde por mim …
sem mais
Network no Brasil e Europa?? hahahah como dizia aquele tiozinho na T.V, “simplesmente um luxo”. hahahaha

//Daniel
Jovens,
não irei discutir com você sobre o meu comportamento pessoal… aliais o meu terapeuta é muito bem remunerado para me dizer estas coisas…Reforço que humildade é para os fracos… O meu network no Brasil e na Europa responde por mim …
sem mais
No forum tem gente com MUITO mais q vc… e HUMILDE…
vc pra mim é um LIXO…
Pessoal estou com o problema parecido… só que no meu caso a tabela de junção possui campos a mais do que sómente PK’S ai eu uso o “@Embeddable” mapenando assim a tabela de junção para ter os campos persistidos.
Segue a minha dúvida
Tenho as seguintes tabelas:
=> Social Composition - “Composição Social”
=> Partner - “Sócios”
=> Social Composition Partner “tabela de junção de Social Composition e Partner”
Estou tentando salvar a tabela de junção visto que existem 2(dois) campos para aquela junção. Ou seja compositionValue e compositionPercentage que ficam na " Social Composition Partner" além lógico de 2 pks , como segue abaixo:
Só que essa tabela de junção não tem “id” apenas tem 2(duas) FK.
Para eu salvar essa tabela de junção estou utilizando “@Embeddable” onde tenho a chave composta.
Ai eu seto as PK’s “idPartner” e “idSocialComposition”.
Mas tem um problema… como eu salvo a tabela de junção se eu não tenho a Composição Social?.
Oque eu fiz… Salvo a Composição social e retorno o id do insert e depois seto “idSocialComposition” na tabela de junção e depois dou um save. Funciona legal.
Ai que vem a dúvida, naão tem como salvar a tabela de junção com a tabela de SocialComposition e ele entender que é um insert novo e atribui um id para que eu possa salvar a tabela de junção?
Fico no aguardo obrigado!