hibernate中一对多删除时总报错外键约束,求解
//student.hbm.xml
<class name="Student">
<id name="number">
</id>
<property name="name" length="10"/>
<property name="sex" length="2"/>
<set name="courses" table="student_course" cascade="all">
<key column="student_id"/>
<many-to-many class="Course" column="course_id"/>
</set>
</class>
//course.hbm.xml
<class name="Course" >
<id name="courseId">
<generator class="native"/>
</id>
<property name="name" length="10"/>
<property name="scores"/>
<property name="semester" length="1"/>
<set name="students" table="student_course" inverse="true">
<key column="course_id"/>
<many-to-many class="Student" column="student_id"/>
<set>
</class>
删除学生时报错说外键约束:
public void deleteStudent(){
Session s = HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
Query query = s.createQuery("delete Student stu where stu.name=:name");
query.setParameter("name", "aaa");
query.executeUpdate();
tx.commit();
s.close();
}
------解决方案-------------------- <many-to-many class="Student" column="student_id"/>
你这是多对多啊,删除学生的时候,它跟班级有关联,所以才报的错哇。
------解决方案--------------------一般使用many-to-one就可以的了
------解决方案--------------------对他进行删除验证,也就是删除之前先删除与之有关系的外键表!