![](/img/trans.png)
[英]JPA2.0 mapping a map of Map<Entity0,Entity1> how do I specify column names?
[英]How to control JPA Column names in Map
實體建設
有以下地圖:
@Column(name = "paper_FK")
@ManyToMany
@JoinTable(inverseForeignKey = @ForeignKey(name = "construction_FK"), joinColumns = @JoinColumn(name = "construction_FK", referencedColumnName = "construction_FK"), name = "ConstructionPaperTracks", inverseJoinColumns = @JoinColumn(name = "paper_FK"))
private HashMap<Integer, Paper> tracks_field = new HashMap<Integer, Paper>();
根據我的數據庫設計指南,表ConstructionPaperTracks應該具有列construction_FK,position和paper_FK。
JPA使用construction_id,position和paper_id。
如何指定列名?
最好的祝福
海科
我不確定我是否理解“ JPA可以使用construction_id,position和paper_id。”
無論如何,我相信映射將如下所示:
@Entity
public class Construction{
@Id
@Column(name = "construction_id")
//specify a generation strategy
private Long id;
@ManyToMany
@JoinTable(name = "ConstructionPaperTracks",
joinColumns = @JoinColumn(name = "construction_FK"),
inverseJoinColumns = @JoinColumn(name = "paper_FK"))
@MapKeyColumn(name = "position")
private HashMap<Integer, Paper> paper;
}
您需要指定@MapKeyColumn
,其文檔指出:
如果映射鍵用於使用連接表的ManyToMany實體關系或OneToMany實體關系, 則映射鍵列在連接表中
對於joinColumn和inverseJoinColumn,referencedColumn名稱將默認為引用表的主鍵列(construction_id,paper_id),因此您不必指定它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.