Bom dia pessoal. Antes de mais nada, pelo que observei o forum esta cheio de topicos a respeito do assunto que vou pedir a ajuda de vcs, mas, eu nao consegui resolver o meu problema e por isso resolvi abrir mais um topico. Por favor moderadores me desculpem.
O meu problema é o seguinte. Tenho duas entitys: Aluno e Turma. Elas tem um relacionamento many-to-many bidirecionais. A entity Turma é a dona do relacionamento. Pela entity Turma ser a owner assim que ela for persistida a entity Aluno tambem tem que ser persistida. Mas a entity Aluno nao é persistida e nem a tabela TurmaAluno que contem as chaves primary de Aluno e Turma.
Abaixo esta o codigo de cada entity e a classe que executa a persistencia.
A Entity Aluno:
@Entity
@Table(name = "Aluno")
public class Aluno extends Pessoa implements Serializable {
private String matricula;
private Set<Turma> turmas;
@Column(name = "matricula", length = 10)
public String getMatricula() {
return matricula;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
@ManyToMany (mappedBy = "alunos",
targetEntity = br.com.mgf.modelo.Turma.class )
public Set<Turma> getTurmas() {
return turmas;
}
public void setTurmas(Set<Turma> turmas) {
this.turmas = turmas;
}
}
Agora a Entity Turma:
@Entity
@Table(name = "Turma")
public class Turma implements Serializable {
private Long idTurma;
private String nomeTurma;
private Set<Aluno> alunos;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getIdTurma() {
return idTurma;
}
public void setIdTurma(Long idTurma) {
this.idTurma = idTurma;
}
@Column(name = "nomeTurma", length = 20)
public String getNomeTurma() {
return nomeTurma;
}
public void setNomeTurma(String nomeTurma) {
this.nomeTurma = nomeTurma;
}
@ManyToMany(targetEntity = br.com.mgf.modelo.Aluno.class, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "TurmaAluno",
joinColumns = {@JoinColumn(name = "idTurmaFk")}, inverseJoinColumns = {@JoinColumn(name="idAlunoFk")})
public Set<Aluno> getAlunos() {
return alunos;
}
public void setAlunos(Set<Aluno> alunos) {
this.alunos = alunos;
}
}
Agora a classe que executa a persistencia…
public class Dao {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Session session = new HibernateUtil().getSession();
Transaction tx = session.beginTransaction();
Aluno aluno = new Aluno();
Turma turma = new Turma();
Dao dao = new Dao();
aluno = (Aluno) dao.cadastraAluno();
aluno.setTurmas(new HashSet<Turma>());
aluno.getTurmas().add(turma);
turma.setNomeTurma("Hello World");
turma.setAlunos(new HashSet<Aluno>());
turma.getAlunos().add(aluno);
session.save(turma);
tx.comit();
session.close();
}
public Pessoa cadastraAluno(){
Aluno aluno = new Aluno();
Endereco endereco = new Endereco();
aluno.setNome("Diego Junior");
aluno.setTelefone("35-3522-8460");
aluno.setEmail("[email removido]");
aluno.setMatricula("20027293");
endereco.setRua("Av: Amazonas");
endereco.setBairro("Bela Vista");
endereco.setNumero(663);
endereco.setCep("37900-238");
endereco.setCidade("Passos");
endereco.setComplemento("Casa");
endereco.setEstado("MG");
endereco.setPessoa(aluno);
aluno.setEndereco(endereco);
return aluno;
}
}
O que pode estar acontecendo? Obrigado