2016-12-22 16 views
1

私はテーブルを持っています。クイズテーブルと結合された教師。 1教師はN Quizeを持つことができます。hibernateを使用してDBからアイテムを削除する

私は、データベースから教師を削除したいと考えています。

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails 

これらは、教師とクイズのクラスです。削除カスケードを追加すると解決すると思ったが、それはしなかった。私はそれを解決できるか

教師

@Entity 
public class Teacher extends User{ 

    private List<Quiz> quizList; 

    public Teacher() { 
    } 

    public Teacher(String name, String surname, String nick, String password) { 
     super(name, surname, nick, password); 
     quizList = new ArrayList<>(); 
    } 

    @OneToMany 
    @Cascade(value={CascadeType.REMOVE}) 
    @JoinColumn(name = "quiz_id") 
    public List<Quiz> getQuizList() { 
     return quizList; 
    } 

    public void setQuizList(List<Quiz> quizList) { 
     this.quizList = quizList; 
    } 
} 

クイズ

@Entity 
public class Quiz { 

    private SimpleStringProperty name = new SimpleStringProperty(); 

    private int quiz_id; 

    private List<Task> taskList; 

    private Teacher owner; 

    public Quiz() { 
    } 

    public Quiz(String name, Teacher owner) { 
     this.name.set(name); 
     this.owner = owner; 
     taskList = new ArrayList<>(); 
    } 

    public Quiz(String name, Teacher owner, List<Task> taskList) { 
     this.name.set(name); 
     this.owner = owner; 
     this.taskList = taskList; 
    } 

    @Column(nullable = false) 
    public String getName() { 
     return name.get(); 
    } 

    public SimpleStringProperty nameProperty() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name.set(name); 
    } 

    @ManyToOne 
    @JoinColumn(name = "teacher_id") 
    public Teacher getOwner() { 
     return owner; 
    } 

    public void setOwner(Teacher owner) { 
     this.owner = owner; 
    } 

    @Id 
    @GenericGenerator(name="id" , strategy="increment") 
    @GeneratedValue(generator="id") 
    public int getQuiz_id() { 
     return quiz_id; 
    } 

    public void setQuiz_id(int quiz_id) { 
     this.quiz_id = quiz_id; 
    } 

    @OneToMany 
    public List<Task> getTasksList() { 
     return taskList; 
    } 

    public void setTasksList(List<Task> taskList) { 
     this.taskList = taskList; 
    } 
} 

任意のアイデア?私はすべての答えと提案に感謝します。

編集:まあ、私はそれを解決することができた、私はちょうどすべての注釈で失われてしまった。ここに作業バージョンがあります。

教師

@Entity 
public class Teacher extends User{ 

    private List<Quiz> quizList; 

    public Teacher() { 
    } 

    public Teacher(String name, String surname, String nick, String password) { 
     super(name, surname, nick, password); 
     quizList = new ArrayList<>(); 
    } 

    @OneToMany(orphanRemoval = true) 
    public List<Quiz> getQuizList() { 
     return quizList; 
    } 

    public void setQuizList(List<Quiz> quizList) { 
     this.quizList = quizList; 
    } 
} 

クイズ

@Entity 
public class Quiz { 

    private SimpleStringProperty name = new SimpleStringProperty(); 

    private int quiz_id; 

    private List<Task> taskList; 


    public Quiz() { 
    } 

    public Quiz(String name) { 
     this.name.set(name); 
     taskList = new ArrayList<>(); 
    } 

    public Quiz(String name , List<Task> taskList) { 
     this.name.set(name); 
     this.taskList = taskList; 
    } 

    @Column(nullable = false) 
    public String getName() { 
     return name.get(); 
    } 

    public SimpleStringProperty nameProperty() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name.set(name); 
    } 

    @Id 
    @GenericGenerator(name="id" , strategy="increment") 
    @GeneratedValue(generator="id") 
    public int getQuiz_id() { 
     return quiz_id; 
    } 

    public void setQuiz_id(int quiz_id) { 
     this.quiz_id = quiz_id; 
    } 

    @OneToMany(orphanRemoval = true) 
    public List<Task> getTasksList() { 
     return taskList; 
    } 

    public void setTasksList(List<Task> taskList) { 
     this.taskList = taskList; 
    } 
} 
+0

[JPA OneToManyの子を削除しない]の複製があります(http://stackoverflow.com/questions/2011519/jpa-onetomany-not-deleting-child) –

答えて

0

親:

@Entity 
public class Teacher extends User{ 

    private List<Quiz> quizList; 

    public Teacher() { 
    } 

    public Teacher(String name, String surname, String nick, String password) { 
     super(name, surname, nick, password); 
     quizList = new ArrayList<>(); 
    } 

    @OneToMany(mappedBy = "teacher") 
    @Cascade(CascadeType.ALL) 
    public List<Quiz> getQuizList() { 
     return quizList; 
    } 

    public void setQuizList(List<Quiz> quizList) { 
     this.quizList = quizList; 
    } 
} 

子:

@Entity 
public class Quiz { 

    private SimpleStringProperty name = new SimpleStringProperty(); 

    private int quiz_id; 

    private List<Task> taskList; 

    @ManyToOne 
    @Cascade(CascadeType.ALL) 
    @JoinColumn(name="teacher_id", nullable = false) 
    private Teacher owner; 

    public Quiz() { 
    } 

    public Quiz(String name, Teacher owner) { 
     this.name.set(name); 
     this.owner = owner; 
     taskList = new ArrayList<>(); 
    } 

    public Quiz(String name, Teacher owner, List<Task> taskList) { 
     this.name.set(name); 
     this.owner = owner; 
     this.taskList = taskList; 
    } 

    @Column(nullable = false) 
    public String getName() { 
     return name.get(); 
    } 

    public SimpleStringProperty nameProperty() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name.set(name); 
    } 

    public Teacher getOwner() { 
     return owner; 
    } 

    public void setOwner(Teacher owner) { 
     this.owner = owner; 
    } 

    @Id 
    @GenericGenerator(name="id" , strategy="increment") 
    @GeneratedValue(generator="id") 
    public int getQuiz_id() { 
     return quiz_id; 
    } 

    public void setQuiz_id(int quiz_id) { 
     this.quiz_id = quiz_id; 
    } 

    @OneToMany 
    public List<Task> getTasksList() { 
     return taskList; 
    } 

    public void setTasksList(List<Task> taskList) { 
     this.taskList = taskList; 
    } 
} 

それはあなたを助ける必要があります。

+0

エラーが発生しました:(24、38)java:互換性のない型:org.hibernate.annotations.CascadeTypeはjavax.persistence.CascadeTypeに変換できません –

+0

エラーが発生しました:(24、38)java:互換性のない型:org.hibernate.annotations.CascadeTypeをjavax.persistence.CascadeTypeに変換できませんこのタイプのアノテーションを持つリストのゲッター。 –

+0

輸入品を確認してください。 javax.persistence.CascadeTypeインポートが必要です。 –

関連する問題