我正在使用带有 Java 的 Hibernate 3.0。
我有以下课程。
教师.java
private long id;
private String teacherName;
private List<Student> students;
// getter-setter of all
主题.java
private long id;
private String subjectName;
private List<Student> students;
// getter-setter of all
学生.java
private long id;
private String studentName;
// getter-setter of both
教师.hbm.xml
<class name="Teacher" table="teacher_master">
<!--other mappings-->
<list name="students" cascade="refresh" table="teacher_student_master">
<key column="teacher_id"/>
<index column="student_teacher_position" type="integer"/>
<many-to-many class="Student" column="student_id"/>
</list>
</class>
主题.hbm.xml
<class name="Subject" table="subject_master">
<!--other mappings-->
<list name="students" cascade="refresh" table="subject_student_master">
<key column="subject_id"/>
<index column="student_subject_position" type="integer"/>
<many-to-many class="Student" column="student_id"/>
</list>
</class>
Student.hbm.xml包含id和studentName属性的映射。
我面临的问题是:
我通过 Hibernate从student_master中删除了一行。
Student stu = new Student();
stu.setId(1l);
session.delete(stu);
transaction.commit();
但是已删除学生 (id = 1)的引用不会从表teacher_student_master和subject_student_master中删除。
我该如何克服这个问题?
注意:如果我可以通过使用 Hibernate 进行某种配置而不是编码和查询触发来克服这个问题,那就太好了。
编辑:我看过这个链接。但是在那,它提到我需要做一些编码,首先获取与 student=1 关联的所有教师,然后从学生列表中删除 student=1,然后更新教师。我想避免这种编码。可能吗?