【发布时间】:2014-01-14 08:31:06
【问题描述】:
我在 Hibernate 关系和 Save-Update-Delete 方面遇到了一些问题。假设我有以下内容:
public class Subject{
@Id
private int ID;
private String Name;
//getters and setters
}
public class Grade{
@Id
private int ID;
private String Name;
//getters and setters
}
public class Course{
@Id
private int ID;
@ManyToOne
private Grade G;
@ManyToOne
private Subject S;
//getters and setters
}
public class Teacher extends User{
@ManyToMany
List<Course> Courses = new ArrayList<Course>();
//...
//getters and setters
}
问题是,我不能简单地删除一个主题,因为它有关系。 我的意思是,当我删除一个主题时,所有具有该主题的课程也必须被删除。而且,如果删除了课程,则“属于”该课程的主题应该存在。成绩和课程也是如此。
我的解决方案(暂时)是: 删除 Subject 的方法,在删除 Subject 本身之前调用删除所有具有该主题的 Courses 的方法。
但我确信这不是正确的方法。我知道 CascadeType 应该可以解决这个问题,但我不知道该使用哪个,也不知道何时使用。
现在我们在谈论 Hibernate,所有关系都应该是双向的吗?
【问题讨论】:
标签: hibernate entity-relationship cascade bidirectional-relation