gpt4 book ai didi

java - 外键约束在多对多 Hibernate 关系上失败

转载 作者:行者123 更新时间:2023-12-01 16:52:21 25 4
gpt4 key购买 nike

我目前正在尝试在 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<>();

Track.java:

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

我首先将轨道保存到数据库中,与一个 @Transactional 方法中的任何播放列表没有关联,离开事务边界,然后输入一个新的 @Transactional 方法,在该方法中将轨道添加到 Playlist 对象,然后尝试保存该方法此时我在顶部得到了异常。

大家有什么想法吗?

最佳答案

事实证明,我只是在连接表注释上以错误的方式连接列。

关于java - 外键约束在多对多 Hibernate 关系上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61663361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com