簡體   English   中英

無法添加或更新子行:嘗試保存實體及其關系實體時出現外鍵約束失敗錯誤

[英]Cannot add or update a child row: a foreign key constraint fails error when trying to save an entity and its relational entity

好吧,我的數據庫中有以下表格:

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;

當我創建一個 Movie 對象並設置所有屬性,包括一個 Actor 並調用 save 方法時,我得到:“無法添加或更新子行:外鍵約束失敗( movieow actor_movie ,CONSTRAINT FKsc6u9gs0762qyrnyfwp9d5q2b FOREIGN KEY ( movie_id ) REFERENCES actoractor_id ))”

我想當我保存一個 Movie 對象時,它會級聯保存 actor 和 actor_movie 表。

我究竟做錯了什么?

這聽起來像是不同實體不同步的問題(我沒有針對您的情況進行測試)。 這個想法是為您的集合創建添加和刪除方法,用於添加或刪除相應關聯對象中的實體。 有關@ManyToMany關系的清晰示例,您可以查看Vlad Mihalcea 關於這些關系的文章 關於同步和級聯,他也寫過一篇文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM