![](/img/trans.png)
[英]JPA/Hibernate: Map many-to-many relationship when join table has own primary key
[英]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.