Olá todos.
Estou tendo um problema aqui que não achei solução em outros tópicos e nem mesmo com ajuda do Google.
Tenho as classes Artist e Song, sendo que um artista participa em várias canções e uma canção pode ter vários artistas:
Artist.java
...
/** As canções do artista. */
@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(
name="Artist_has_Song", schema="public",
joinColumns={@JoinColumn(name="artist_cd_artist")},
inverseJoinColumns={@JoinColumn(name="song_cd_song")})
private Set<Song> songs;
...
Song.java
...
/** Os artistas presentes na canção. */
@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(
name="Artist_has_Song", schema="public",
joinColumns={@JoinColumn(name="song_cd_song")},
inverseJoinColumns={@JoinColumn(name="artist_cd_artist")})
private Set<Artist> artists;
...
O problema é que quando salvo uma Song, o DAO não salva o Set de artistas junto. O SQL gerado pelo Hibernate na hora:
Hibernate: select nextval ('public.song_cd_song_seq')
Hibernate: /* insert com.gmail.trebloc.music.Song */ insert into public.song (Ds_title, Cd_song) values (?, ?)
E isso realmente salva a Song com seu código e seu título, mas sem nenhum Artist (a tabela associativa permanece vazia).
O que fiz de errado? :oops:

