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 について話しているのですが、すべての関係は双方向であるべきですか?