原因:与其他表有多对多关系
解决方法:/**
* 多对多 被控方删除(可以删除中间表记录)
* 下面例子中,Teacher和Cours有多对多关系,如果要删除一个Teacher
* 则要按以下方法执行
*/
public void testDeleteByInverse2() {
String id = "402881ee175f04be01175f04c06c0002";
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
Teacher t1 = (Teacher) session.get(Teacher.class, id);
//先把Course中有t1的记录把t1移除
Set<Course> cs = t1.getCourses();
for (Course c : cs) {
c.getTeachers().remove(t1);
}
//如果hibernate报错,则加上下面两句试试
//session. getTransaction().commit();
//session.beginTransaction();
session.delete(t1);
session.getTransaction().commit();
session.close();
}