[解決済み] ERROR: テーブル "tablename" の更新または削除は外部キー制約に違反します。
2022-02-27 16:36:30
質問
親学生または親コースを削除しようとしているのですが、このエラーが発生します。
原因:org.postgresql.util.PSQLException: ERROR: テーブル "student" の更新または削除は、テーブル "registration" の外部キー制約 "fkeyvuofq5vwdylcf78jar3mxol" に違反します。
RegistrationIdクラスは、Registrationクラスで使用されるコンポジットキーです。私はSpring data jpaとspring bootを使用しています。
私は何を間違えているのでしょうか?私はcascadetype.allを置くことが、親が削除されたときに子も削除されるべきであることを知っていますが、それは代わりに私にエラーを与えています。
@Embeddable
public class RegistrationId implements Serializable {
@JsonIgnoreProperties("notifications")
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "student_pcn", referencedColumnName="pcn")
private Student student;
@JsonIgnoreProperties({"teachers", "states", "reviews"})
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "course_code", referencedColumnName="code")
private Course course;
登録クラス
@Entity(name = "Registration")
@Table(name = "registration")
public class Registration {
@EmbeddedId
private RegistrationId id;
解決方法は?
hibernateの@OnDeleteアノテーションを使用して動作させました。JPA.persistenceのCascadeTypesはなぜか機能していませんでした。彼らは私が選んだものに対して何の効果もありませんでした。
以下のような感じです。これで、親のStudentや親のCourseを削除すると、すべての子(Registrations)が一緒に削除されるようになりました。
@Embeddable
public class RegistrationId implements Serializable {
@JsonIgnoreProperties("notifications")
@OnDelete(action = OnDeleteAction.CASCADE)
@OneToOne
@JoinColumn(name = "student_pcn", referencedColumnName="pcn")
private Student student;
@JsonIgnoreProperties({"teachers", "states", "reviews"})
@OnDelete(action = OnDeleteAction.CASCADE)
@OneToOne
@JoinColumn(name = "course_code", referencedColumnName="code")
private Course course;
関連
-
[解決済み] ポストグレス \コピー構文
-
[解決済み] Rails 4でPostgreSQLサーバーのデフォルトのユーザー名/パスワードは何ですか?
-
[解決済み] postgresqlでクエリから最小値、中央値、最大値を取得するにはどうすればよいですか?
-
[解決済み] Postgresのロール "root "が存在しない。Herokuからpg:pullでデータベースを引き出そうとした場合
-
[解決済み] PostgreSQLのプロセスが "Idle in transaction "である場合、どのような意味がありますか?
-
[解決済み】PostgreSQLのエラーです。Fatal: ロール "username" が存在しません。
-
[解決済み】PostgreSQLスキーマのテーブルを一覧表示する。
-
[解決済み】postgresql - テキストフィールド内の文字列のすべてのインスタンスを置換する
-
[解決済み】なぜPostgreSQLのようなデータベース上でRabbitMQのようなメッセージブローカーが必要なのでしょうか?
-
[解決済み】psql - コマンドの結果をファイルに保存する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Postgresqlの再起動方法
-
[解決済み] PostgreSQLでDATE Differenceを計算する方法は?
-
[解決済み] Ubuntu 18.04でPostgreSQLを再起動する方法
-
[解決済み] libpqのソースはどこで手に入りますか?
-
[解決済み] postgresqlでクエリから最小値、中央値、最大値を取得するにはどうすればよいですか?
-
[解決済み】psql: FATAL: ユーザー "postgres" の Ident 認証に失敗しました。
-
[解決済み】psqlを使用して、データベースにインストールされている拡張機能を一覧表示するにはどうすればよいですか?
-
[解決済み】PostgreSQLのテーブルから特定の行をINSERT SQLスクリプトとしてエクスポートする。
-
[解決済み】なぜPostgreSQLのようなデータベース上でRabbitMQのようなメッセージブローカーが必要なのでしょうか?
-
[解決済み】PostgreSQLでタイムゾーンがある場合とない場合のタイムスタンプの違いについて