繁体   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