休止状態でOneToManyとManyToOneを削除する際に問題があります。私は問題は、私は1人の子供のために2人の両親がいることだと思う。これは、私はそれが注釈を使用してHibernate 1対多削除
Persona Rol Pais
id id id
name name name
Pais
Rol
役割(ROL)と国(PAIS)に関連しているあなたは、人(ペルソナ)を見ることができるようになった方法です。 私のエンティティは、このようなものです:私は人を削除しようとしている
人
public class Persona implements java.io.Serializable {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Pais", nullable=false)
public Pais getPais() {
return this.pais;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Rol", nullable=false)
public Rol getRol() {
return this.rol;
}
パイス(国)
public class Pais implements java.io.Serializable {
private Set<Persona> personas = new HashSet<Persona>(0);
@OneToMany(fetch=FetchType.LAZY, mappedBy="pais", cascade=CascadeType.ALL,orphanRemoval=true)
public Set<Persona> getPersonas() {
return this.personas;
ロル(役割)
public class Rol implements java.io.Serializable {
private Set<Persona> personas = new HashSet<Persona>(0);
@OneToMany(fetch=FetchType.LAZY, mappedBy="rol", cascade=CascadeType.ALL,orphanRemoval=true)
public Set<Persona> getPersonas() {
return this.personas;
}
とその人だけが国と役割を切り離してからpを削除しなければならないと思いますそれはうまくいきません。これは私の削除のためのコードです
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Persona p = (Persona)session.load(Persona.class, idPersona);
Pais pais = (Pais)session.load(Pais.class, p.getPais().getId()); //try to p.getPais();
rol rol = (Rol)session.load(Rol.class,p.getRol().getId()); //try to p.getRol();
pais.getPersonas().remove(p);
rol.getPersonas().remove(p);
p.setPais(null);
p.setRol(null);
session.update(pais);
session.update(rol);
session.delete(p);
session.getTransaction().commit();
session.close();
あなたが私を助けてくれることを願っています。休止状態でこの削除することは私を驚かせています。
だから問題は何ですか? –
人は削除されていません:( –