实体构建
有以下地图:
@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使用build_id,position和paper_id。
如何指定列名?
最好的问候
的Heiko
答案 0 :(得分:1)
我不确定我理解“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),因此您不必指定这些名称。