簡體   English   中英

如何將多對多連接表的附加列映射到關聯映射鍵?

[英]How to map additional column of many-to-many join table to the association map key?

有一個實體調用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>();
    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM