如何将多对多连接表的附加列映射到关联映射键?

jsmin

有一个实体调用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章