patient.hbm.xml中
person.hbm.xml中
看到过N中版本,说cascade放的位置,经过无数次实验,发现居然是这样放,不是这样会对数据操作失败。
Patient.java 多的一方
Person.java
做删除时,一定要加flush要不然不成功:
在控制台中测试时,这样就成功了:
<many-to-one name="person" class="com.clinic.model.Person" fetch="select" >
<column name="person_id" />
</many-to-one>
person.hbm.xml中
<set name="patients" table="patient" cascade="all" inverse="true" lazy="false">
<key column="person_id"/>
<one-to-many class="com.clinic.model.Patient"/>
</set>
看到过N中版本,说cascade放的位置,经过无数次实验,发现居然是这样放,不是这样会对数据操作失败。
Patient.java 多的一方
public class Patient implements Serializable{
private int id;
private Person person;
public Patient() {
// TODO Auto-generated constructor stub
}
//一个空的和一个加了全部属性的构造函数,这两个构造函数绝对不能省
public Patient(int id,Person person) {
this.id = id;
this.person = person;
}
}
Person.java
public class Person implements Serializable{
private int id;
private Set<Patient> patients=new HashSet<Patient>();
//同上,两个构造函数不能省
}
做删除时,一定要加flush要不然不成功:
this.getHibernateTemplate().delete(
(Patient)this.getHibernateTemplate().get(Patient.class, id));
this.getHibernateTemplate().flush();
在控制台中测试时,这样就成功了:
Patient p = null;
p = (Patient) session.load(Patient.class, 18);
session.delete(p);