@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' и выполнить удаление.

Другие вопросы по тегам