我的实体中有一个单向的onetomany对象
@OneToMany(mappedBy="pub", cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="reference")
此实体的FK和PK列以及子实体都是“引用”
当为此连接生成SQL时,它使用默认的objectname + _ + PK“pub_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
答案 0 :(得分:1)
单向一对多映射必须使用连接表。通过指定@ OneToMany.mappedBy元素,您意味着双向一对多。因此,映射从“拥有”映射(由“mappedBy”指定的映射)获取连接列名称。由于没有指定,因此使用默认连接列。