Сейчас я пытаюсь реализовать в 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`))
Вот ликбаза для моей таблицы соединений:
- 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, а затем пытаюсь сохранить это, и в этот момент я получаю исключение вверху.
У кого-нибудь есть идеи?