Não Consigo persistir os dados no relacionamento ManyToMany, de Aluno e Disciplina. E nenhum erro é acusado. Roda legal, mas no banco não persiste nada.
package br.ufc.sistema.Testes;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import br.ufc.sistema.Aluno;
import br.ufc.sistema.Disciplina;
import br.ufc.sistema.Ementa;
import br.ufc.sistema.Universidade;
public class Testando {
public static void main(String[] args) {
EntityManagerFactory fabrica = Persistence
.createEntityManagerFactory("teste_aula");
EntityManager manager = fabrica.createEntityManager();
/* Inserir aluno */
//Aluno a = new Aluno();
// a.setNome("Breno");
//
// manager.getTransaction().begin();
// manager.persist(a);
// manager.getTransaction().commit();
// manager.close();
// fabrica.close();
/* 5 - Vincular disciplinas a um aluno */
Aluno a = manager.find(Aluno.class, 1L);
Disciplina d1 = manager.find(Disciplina.class, 1L);
Disciplina d2 = manager.find(Disciplina.class, 2L);
List<Disciplina> disciplinas = new ArrayList<Disciplina>();
disciplinas.add(d1);
disciplinas.add(d2);
a.setDisciplinaList(disciplinas);
manager.getTransaction().begin();
manager.persist(a);
manager.getTransaction().commit();
// manager.close();
// fabrica.close();
/*
* Listar Disiciplinas de um aluno
*
* Aluno al = manager.find(Aluno.class, 2L);
*
* for (Disciplina d : al.getDisciplinaList()) {
* System.out.println(d.getNome()); } manager.close(); fabrica.close();
*/
manager.close();
fabrica.close();
}
}
/* Classe disciplina */
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
@Entity(name=“DISCIPLINA”)
public class Disciplina {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "DIS_ID", nullable = false)
private Long disciplinaId;
@Column(name = "NOME")
private String nome;
@OneToOne(optional = false, cascade = CascadeType.ALL, mappedBy = "disciplina", targetEntity = Ementa.class)
private Ementa ementa;
@ManyToOne(optional = false)
@JoinColumn(name = "UNIVER_ID", referencedColumnName = "UNI_ID")
private Universidade universidade;
@Column(name = "UNIVER_ID", insertable = false, updatable = false, nullable = false)
private Long uniId;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="DISCIPLINA_ALUNO",
joinColumns=@JoinColumn(name="DISCI_ID",
referencedColumnName="DIS_ID"),
inverseJoinColumns=@JoinColumn(name="ALUNO_ID",
referencedColumnName="ALU_ID"))
private List<Aluno> alunoList;
public Long getDisciplinaId() {
return disciplinaId;
}
public void setDisciplinaId(Long disciplinaId) {
this.disciplinaId = disciplinaId;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Ementa getEmenta() {
return ementa;
}
public void setEmenta(Ementa ementa) {
this.ementa = ementa;
}
public Universidade getUniversidade() {
return universidade;
}
public void setUniversidade(Universidade universidade) {
this.universidade = universidade;
}
public Long getUniId() {
return uniId;
}
public void setUniId(Long uniId) {
this.uniId = uniId;
}
public List<Aluno> getAlunoList() {
return alunoList;
}
public void setAlunoList(List<Aluno> alunoList) {
this.alunoList = alunoList;
}
}
/* Classe aluno*/
package br.ufc.sistema;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
@Entity(name = “ALUNO”)
public class Aluno {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ALU_ID", nullable = false)
private Long alunoId;
@Column(name = "NOME")
private String nome;
@ManyToMany(mappedBy = "alunoList", fetch = FetchType.LAZY)
private List<Disciplina> disciplinaList;
public Long getAlunoId() {
return alunoId;
}
public void setAlunoId(Long alunoId) {
this.alunoId = alunoId;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public List<Disciplina> getDisciplinaList() {
return disciplinaList;
}
public void setDisciplinaList(List<Disciplina> disciplinaList) {
this.disciplinaList = disciplinaList;
}
}