记录没有在多对多关系中保存在数据库中

时间:2014-07-01 01:29:52

标签: hibernate jpa

我有一个多对多关系,我就像这样映射它 FournisseurActiviteActiviteFournisseur

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;
    }
        ...
}

我的问题是当执行此代码时,表FournisseurActivite没有发生任何记录!我只是把我得到错误的部分放在数据库正常保存的其他地方

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

1 个答案:

答案 0 :(得分:1)

您需要在cascade上向merge添加persist OneToManygetFournisseurActivites()选项,就像这样

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