ManyToMany的双向关联,操作中间表问题
两张表:类别和模块。
配置如下:
主控方:
@ManyToMany(fetch = FetchType.LAZY,cascade=CascadeType.PERSIST)
@JoinTable(
name="ITSM_CI_CATEGORY_CM",
joinColumns = { @JoinColumn(name="CATEGORY_ID")},//,referencedColumnName = "id")},
inverseJoinColumns = @JoinColumn(name="CUSTOM_MODEL_ID")
)
// @ManyToMany(fetch = FetchType.LAZY, mappedBy="categorySet")
// @FieldProp(symbol = "此类别的模块", desc = "")
public Set<CiCustomModel> getCiCMSet() {
return ciCMSet;
}
public void setCiCMSet(Set<CiCustomModel> ciCMSet) {
this.ciCMSet = ciCMSet;
}
被控方:
@ManyToMany(fetch = FetchType.LAZY, mappedBy="ciCMSet")
@FieldProp(symbol = "此自定义模块所在类别", desc = "")
// @ManyToMany(fetch = FetchType.LAZY,cascade=CascadeType.PERSIST)
// @JoinTable(
// name="ITSM_CI_CATEGORY_CM",
// joinColumns = { @JoinColumn(name="CUSTOM_MODEL_ID")},
// inverseJoinColumns = @JoinColumn(name="CATEGORY_ID")
// )
public Set<CiCategory> getCategorySet() {
return categorySet;
}
public void setCategorySet(Set<CiCategory> categorySet) {
this.categorySet = categorySet;
}
但是这样就有个问题,应该是manytomany的问题:
用this.ciCategory.setCiCMSet(ciCMSet);在主控方可以保存多次多个模块。
而在被控方ciCustomModel.setCategorySet(ccSet);每次都是只能保存最后一个类别。
现在的需求希望能在类别保存多个模块,模块也能选择多个类别。
但是好像manytomany的策略是主控方可以这样,被控方这样保存就会先删除之前的和自己相关的记录,再保存新的。
不知道有没有实现我想要功能的解决办法?