我有两个BE FehlerfallSgVariantBE,另一个是FehlerfallVariantBE 关系是
public class FehlerfallSgVariantBE implements Serializable {
@ManyToOne
@JoinColumn(name = "FEHLERFALL_VARIANT_ID")
private FehlerfallVariantBE fehlerfallVariantBE;
}
public class FehlerfallVariantBE implements Serializable, Cloneable {
@OneToMany(mappedBy = "fehlerfallVariantBE", fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
private Collection<FehlerfallSgVariantBE> fehlerfallSgVariantBECol = new ArrayList<FehlerfallSgVariantBE>();
}
我的方法用@Transactional注释。 在我的方法中,我保存FehlerfallSgVariantBE,同时保存我设置FehlerfallVariantBE对象,如
fehlerfallSgVariantBE.setFehlerfallVariantBE(fehlerfallVariantBE);
// fehlerfallVariantBE is already saved in DB, which has Id also.
insert(fehlerfallSgVariantBE);
执行此语句后,弹簧容器插入fehlerfallVariantBE(父实体)会导致fehlerfallVariantBE表(父)的PK违规。
我不明白为什么要插入?因为这应该在表中保存子实体fehlerfallSgVariantBE实体并在表中设置fehlerfallVariantBE id。