java如何覆盖@JoinColumn中为单个列联接生成的默认SQL名称
在我的实体中,我有一个单向的一个对象
@OneToMany(mappedBy="pub", cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="reference")
此实体和子实体的FK和PK列均为“参考”
当为该联接生成SQL时,它使用默认的objectname+\uPK“pub\u reference”,并忽略我传入的名称
我可以将name=更改为任何名称,但它总是被忽略
即使名称是单列联接,如何重写其默认行为
母实体
@OneToMany(mappedBy="pub", cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="bob")
private Collection<PubDisplayText> pubDisplayText;
子实体
private Pub pub;
@Id
@XmlTransient
public Pub getPub() {
return pub;
}
public void setPub(Pub pub) {
this.pub = pub;
}
参考http://docs.oracle.com/javaee/6/api/javax/persistence/JoinColumn.html#name%28%29
# 1 楼答案
单向一对多映射必须使用联接表。通过指定@OneToMany,意味着一对多的双向性。mappedBy元素。因此,映射从“拥有”映射(由“mappedBy”指定的映射)中获取联接列名。由于此处未指定任何连接,因此使用默认的连接列