[英]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.