簡體   English   中英

外鍵約束在多對多 Hibernate 關系上失敗

[英]Foreign key constraint fails on many to many Hibernate relationship

我目前正在嘗試在 Hibernate 中實現多對多關系。 我跟着: https://www.baeldung.com/hibernate-many-to-many但是我得到一個例外,上面寫着:

java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`playlist_comparer`.`playlist_tracks`, CONSTRAINT `fk_pt_track_id` FOREIGN KEY (`track_id`) REFERENCES `tracks` (`id`))

這是我的聯接表的 liquibase:

        - createTable:
        tableName: playlist_tracks
        columns:
          - column:
              constraints:
                primaryKey: true
                primaryKeyName: pk_playlist_track_id
              name: id
              type: bigint
              autoIncrement: true
          - column:
              name: playlist_id
              type: VARCHAR(255)
              constraints:
                foreignKeyName: fk_pt_playlist_id
                references: playlists(id)
          - column:
              name: track_id
              type: VARCHAR(255)
              constraints:
                foreignKeyName: fk_pt_track_id
                references: tracks(id)

以及我的 Hibernate 對象上的映射:

播放列表.java:

@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name = "playlist_tracks", //
        joinColumns = {@JoinColumn(name = "track_id", nullable = false)}, //
        inverseJoinColumns = {@JoinColumn(name = "playlist_id", nullable = false)})
private Set<Track> tracks = new HashSet<>();

軌道.java:

@ManyToMany(mappedBy = "tracks")
private Set<Playlist> playlists = new HashSet<>();

我首先將曲目保存到數據庫中,在一個 @Transactional 方法中與任何播放列表沒有關聯,離開事務邊界,然后輸入一個新的 @Transactional 方法,在該方法中我將曲目添加到播放列表 object 然后嘗試在此時保存它我在頂部得到了例外。

有人有想法么?

原來我只是在連接表注釋上錯誤地使用了連接列。

暫無
暫無

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

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