私はテーブルを持っています。クイズテーブルと結合された教師。 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;
}
}
[JPA OneToManyの子を削除しない]の複製があります(http://stackoverflow.com/questions/2011519/jpa-onetomany-not-deleting-child) –