Ну, у меня есть следующие таблицы в моей базе данных:
CREATE TABLE movie (
movie_id INTEGER NOT NULL AUTO_INCREMENT,
translated_title VARCHAR(150),
original_title VARCHAR(150),
plot MEDIUMTEXT,
genre VARCHAR(150),
country VARCHAR(250),
language VARCHAR(100),
upvotes INTEGER,
premiere_year INTEGER(4),
duration_minutes Integer,
CONSTRAINT movie_pk PRIMARY KEY (movie_id));
CREATE TABLE actor (
actor_id INTEGER NOT NULL AUTO_INCREMENT,
name VARCHAR(150),
nationality VARCHAR(150),
born_date DATE,
CONSTRAINT actor_pk PRIMARY KEY (actor_id));
CREATE TABLE actor_movie (
actor_id INTEGER,
movie_id INTEGER,
FOREIGN KEY (actor_id) REFERENCES actor (actor_id) ON DELETE CASCADE,
FOREIGN KEY (movie_id) REFERENCES movie (movie_id) ON DELETE CASCADE);
и следующие объекты:
@Entity(name = "movie")
public class Movie implements Serializable {
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "actor_movie",
inverseJoinColumns = { @JoinColumn(name = "actor_id", insertable = true, updatable = true)},
joinColumns = { @JoinColumn(name = "movie_id", insertable = true, updatable = true) })
private Set<Actor> actors;
и:
@Entity(name = "actor")
public class Actor implements Serializable {
@ManyToMany(mappedBy="actors")
private Set<Movie> movies;
Когда я создать объект Mov ie и установить все свойства, включая Actor, и вызвать метод save, я получаю: «Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (movieow
. actor_movie
, CONSTRAINT FKsc6u9gs0762qyrnyfwp9d5q2b
FOREIGN KEY (movie_id
) ССЫЛКИ actor
(actor_id
)) "
Я хочу, чтобы при сохранении объекта Mov ie он каскадно сохранял таблицы actor и actor_mov ie .
Что я делаю не так?