@ManyToOne, @OneToMany ошибка удаления
Авторский класс:
@Id
@GeneratedValue(
strategy = GenerationType.AUTO)
private int id;
private String firstName;
private String lastName;
@OneToMany(
mappedBy = "author")
private List<Book> bookList;
Книжный класс:
@Id
@GeneratedValue(
strategy = GenerationType.AUTO)
private int id;
private String name;
private String language;
private int isbn;
@ManyToOne
@JoinColumn(
name = "author_fk")
private Author author;
Я хочу удалить автора, и я получаю следующую ошибку: "обновить или удалить в таблице" автор "нарушает ограничение внешнего ключа" fk_book_author_fk "в таблице" книга "". Как я могу удалить автора? Сначала я хочу удалить автора, а не книгу.
2 ответа
Решение
По умолчанию JPA не осуществляет каскадные операции от родительских до дочерних объектов. Чтобы включить этот каскад из Author
до Book
измените следующие строки:
@OneToMany(mappedBy = "author")
private List<Book> bookList;
Для того, чтобы:
@OneToMany(mappedBy = "author", cascade = CascadeType.ALL)
private List<Book> bookList;
Автор и книга связаны в базе данных и имеют свойства при удалении, которые в вашем случае могут быть каскадными. Вы можете изменить это на 'установить Null' и выполнить удаление.