Hayi
Hayi

Reputation: 6236

Record didn't get saved in database in many to many relationship

I have a many-to-many relationship and i mapped it like this FournisseurActivite , Activite , Fournisseur

FournisseurActivite.java :

@Entity
@Table(name = "fournisseur_activite", catalog = "ao")
public class FournisseurActivite implements java.io.Serializable {

    private Integer idFournissuerActivite;
    private Activite activite;
    private Fournisseur fournisseur;
        ...
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ID_FOURNISSUER", nullable = false)
    public Fournisseur getFournisseur() {
        return this.fournisseur;
    }
        ...

}

Fournisseur.Java

@Entity
@Table(name = "fournisseur", catalog = "ao")
public class Fournisseur implements java.io.Serializable {

    ...
    private Set<FournisseurActivite> fournisseurActivites = new HashSet<FournisseurActivite>(0);

        ...
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "fournisseur")
    public Set<FournisseurActivite> getFournisseurActivites() {
        return this.fournisseurActivites;
    }
        ...
}

My problem is when execute this code below nothing happened to the table FournisseurActivite no record was added !! i put just the part where i get the error everything else get saved normally in database

fournisseur.getFournisseurActivites()
              .add(new FournisseurActivite(activite,fournisseur));
fournisseurrespository.save(fournisseur);

Upvotes: 0

Views: 62

Answers (1)

fujy
fujy

Reputation: 5264

You need to add cascade merge and persist option to OneToMany on getFournisseurActivites(), like this

@OneToMany(fetch = FetchType.LAZY, mappedBy = "fournisseur", cascade = {CascadeType.MERGE, CascadeType.PERSIST} )
public Set<FournisseurActivite> getFournisseurActivites() {
    return this.fournisseurActivites;
}

Upvotes: 1

Related Questions