首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

hibernate中一对多删除时总报错外键约束,求解解决思路

2012-03-29 
hibernate中一对多删除时总报错外键约束,求解//student.hbm.xmlclass nameStudentid namenumber

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就可以的了
[解决办法]
对他进行删除验证,也就是删除之前先删除与之有关系的外键表!

热点排行