Hi everyone. Sorry if I make a mistake writing but I don't speak english very much.
So, I hope you can help me. I'm trying to delete some records in a many to many relantionship table. My ER is like this
Code:
Equipo Equipo_Campeonato Campeonato
id (PK) -------------> Equipo (PK) <------------ id (PK)
nombre Campeonato (PK) nombre
I have this code for my entities.
Code:
@Entity
@Table(name="campeonato"
,catalog="sistemafutbol"
)
public class Campeonato implements java.io.Serializable {
private Integer id;
private String nombre;
private Set<Equipo> equipos = new HashSet<Equipo>(0);
public Campeonato() {
}
public Campeonato(Liga liga, String nombre) {
this.liga = liga;
this.nombre = nombre;
}
public Campeonato(Liga liga, String nombre, Set<Equipo> equipos) {
this.liga = liga;
this.nombre = nombre;
this.equipos = equipos;
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="Id", unique=true, nullable=false)
public Integer getId() {
return this.id;
}
@Column(name="Nombre", nullable=false, length=200)
public String getNombre() {
return this.nombre;
}
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable(name="equipoxcampeonaato", catalog="sistemafutbol", joinColumns = {
@JoinColumn(name="Campeonato", nullable=false, updatable=false) }, inverseJoinColumns = {
@JoinColumn(name="Equipo", nullable=false, updatable=false) })
public Set<Equipo> getEquipos() {
return this.equipos;
}
}
Code:
@Entity
@Table(name="equipo"
,catalog="sistemafutbol"
)
public class Equipo implements java.io.Serializable {
private Integer id;
private String nombre;
private Set<Campeonato> campeonatos = new HashSet<Campeonato>(0);
public Equipo() {
}
public Equipo(String nombre) {
this.nombre = nombre;
}
public Equipo(String nombre, Set<Campeonato> campeonatos) {
this.nombre = nombre;
this.campeonatos = campeonatos;
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="Id", unique=true, nullable=false)
public Integer getId() {
return this.id;
}
@Column(name="Nombre", nullable=false, length=200)
public String getNombre() {
return this.nombre;
}
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable(name="equipoxcampeonaato", catalog="sistemafutbol", joinColumns = {
@JoinColumn(name="Equipo", nullable=false, updatable=false) }, inverseJoinColumns = {
@JoinColumn(name="Campeonato", nullable=false, updatable=false) })
public Set<Campeonato> getCampeonatos() {
return this.campeonatos;
}
}
That's how I add some teams to the tornaments and torunaments to the teams...and works fine!
Code:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
equipo.getCampeonatos().add(campeonato);
session.merge(equipo);
session.getTransaction().commit();
But with the delete just giveme an exception or doesn't do anything at all.
Code:
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
equipo.getCampeonatos().remove(campeonato);
campeonato.getEquipos().remove(equipo);
//session.delete(equipo); -->first try
//session.merge(equipo); -->second try
session.getTransaction().commit();
listaEquiposAgregados.add(equipo);
PLEASE IF ANYONE CAN HELPMEEEEE!!!