簡體   English   中英

如何在Map中控制JPA列名稱

[英]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.

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