1
我在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
}
而且事是的,我不能简单地删除一个主题,因为它有关系。 我的意思是,当我删除一个主题时,所有具有该主题的课程也必须删除。而且,如果课程被删除,那么“属于”该课程的主题应该存在。而且等级和课程也是如此。
我的解决方案(暂时)是: 删除主题的方法,在删除主题本身之前调用删除所有具有该主题的课程的方法。
但我确定这不是正确的方法。我知道CascadeType应该可以解决这个问题,但是我不知道在哪个时间使用哪个。
现在我们谈论的是Hibernate,所有的关系应该是双向的吗?
而且orphanRemoval = true属性应该加 – mstzn
是的!这看起来不错。但还有另一个问题。班主任有一个属性@ManyToMany私人清单课程;然后,我不能改变Course.class的结构;我的意思是,如果我想访问一个教师是T的主题,我只需编写T.getCourse()。get(0).getSubject()。getName();所以,如果我按照你说的方式改变课程,我将如何获得教师T的科目? –
Quarktum
我还没有说修改课程的任何内容(变量命名除外) - 所以老师对主题的访问可以保持不变。 – kostja