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

4

1 に答える 1