J'ai un problème car j'utilise une table intermédiaire pour enregistrer les ID des autres tables (liste de lecture et Midia pour MidiaPlaylist). Pour une relation plusieurs-à-un/un-à-plusieurs. Comme j'utilise MapID avec une colonne supplémentaire, je crée deux relations plusieurs-à-un. J'utilise la notation @EmbeddedId pour créer la relation des ID. Le type de mappage ne se résout pas avec le type "MERGE".JPA - entité détachée passée à persister Plusieurs à plusieurs
Table Midia
id_midia
--------
Table MidiaPlaylist
id_playlist
id_midia
nr_order
Table Playlist
id_playlist
-------
Mon PlaylistController
0 Enregistrez l'ID dans le tableau "playlist".Et je fais un pour sauver les ids de Midia dans MidiaPlaylist.
Mon MidiaPlaylistBean
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public MidiaPlaylist salvar(MidiaPlaylist entity){
try{
entity = super.save(entity);
}catch(Exception e){
e.printStackTrace();
}
return entity;
}
Mon MidiaPlaylist
@EmbeddedId
private MidiaPlaylistPK pk = new MidiaPlaylistPK();
public MidiaPlaylist(){
}
@MapsId("idMidia")
@ManyToOne
@JoinColumn(name="id_midia", referencedColumnName="id_midia")
private Midia midia;
@MapsId("idPlaylist")
@ManyToOne
@JoinColumn(name="id_playlist", referencedColumnName="id_playlist")
private Playlist playlist;
@Column(name="nr_ordem", nullable=false)
private int nrOrdem;
public Midia getMidia() {
return midia;
}
public void setMidia(Midia midia) {
this.midia = midia;
}
public Playlist getPlaylist() {
return playlist;
}
public void setPlaylist(Playlist playlist) {
this.playlist = playlist;
}
public void setPk(MidiaPlaylistPK id) {
this.pk = id;
}
public MidiaPlaylistPK getPk() {
return this.pk;
}
public void setNrOrdem(int nrOrdem){
this.nrOrdem = nrOrdem;
}
public int getNrOrdem(){
return this.nrOrdem;
}
Ma Playlist
@Id
@GeneratedValue
@Column(name="id_playlist")
private Long idPlaylist;
@OneToMany(mappedBy = "playlist", cascade=CascadeType.MERGE)
private List<MidiaPlaylist> midiaPlaylist;
--get et setter
erreur Console:
entité individuelle transmise à persister: com.bcm.midia.database.entity.Midia
où je pense que l'erreur est: dans la cartographie de Midia
@Id
@GeneratedValue
@Column(name="id_midia")
private Long idMidia;
@OneToMany(mappedBy = "midia", fetch = FetchType.LAZY, cascade=CascadeType.MERGE)
private List<MidiaPlaylist> midiaPlaylist;
--get et setter
Pouvez-vous m'aider à comprendre comment enregistrer dans ce mapping many-to-many? Est-il préférable de refaire cette relation? Je ne sais plus quoi faire.
Copie possible de [Comment persister @ManyToMany relation - entité en double ou détachée] (https://stackoverflow.com/questions/9821914/how-to-persis-manytomany-relation-duplicate-entry-or-detached -entité) – crizzis
ce n'est pas en double, ils sont différents problèmes parce que j'utilise EJB. Je ne peux pas persister, quelqu'un pourrait-il me présenter une solution? –