有一个实体调用Version并且这个实体有一个内部连接多对多关系。桥表VER_EQUIVALENTS有 [VER_ID, EQUIVALENT_VER_ID, CODE] 列,CODE 列包含等效版本的代码。
这就是我实现这种关系的方式。
public class Version {
private String code;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(
name = "VER_EQUIVALENTS",
joinColumns = {@JoinColumn(name = "VER_ID")},
inverseJoinColumns = {@JoinColumn(name = "EQUIVALENT_VER_ID")}
)
@MapKey(name = "code")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
private Map<String, Version> equivalentVersions = new HashMap<String, Version>();
}
这是我尝试插入包含等效版本的版本时得到的结果。
ORA-01400: cannot insert NULL into ("VER_EQUIVALENTS"."CODE")
如何设置CODE值?
如果我正确理解您的需要,您应该按以下方式更正您的映射:
public class Version {
// ...
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(
name = "VER_EQUIVALENTS",
joinColumns = {@JoinColumn(name = "VER_ID")},
inverseJoinColumns = {@JoinColumn(name = "EQUIVALENT_VER_ID")}
)
@MapKeyColumn(name = "CODE")
private Map<String, Version> equivalentVersions = new HashMap<String, Version>();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句