我有一个多对多关系,我就像这样映射它
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;
}
...
}
我的问题是当执行此代码时,表FournisseurActivite
没有发生任何记录!我只是把我得到错误的部分放在数据库正常保存的其他地方
fournisseur.getFournisseurActivites()
.add(new FournisseurActivite(activite,fournisseur));
fournisseurrespository.save(fournisseur);
答案 0 :(得分:1)
您需要在cascade
上向merge
添加persist
OneToMany
和getFournisseurActivites()
选项,就像这样
@OneToMany(fetch = FetchType.LAZY, mappedBy = "fournisseur", cascade = {CascadeType.MERGE, CascadeType.PERSIST} )
public Set<FournisseurActivite> getFournisseurActivites() {
return this.fournisseurActivites;
}