我的实体中有一个单向 onetomany 对象
@OneToMany(mappedBy="pub", cascade = CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="reference")
该实体和子实体的 FK 和 PK 列都是“引用”
当为此连接生成 SQL 时,它使用默认的 objectname + _ + PK“pub_reference”并忽略我传入的名称。
我可以将 name= 更改为任何内容,但它总是被忽略。
如何覆盖 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
最佳答案
单向一对多映射必须使用连接表。您通过指定 @OneToMany.mappedBy 元素来暗示双向一对多。因此,映射从“拥有”映射(由“mappedBy”指定的映射)获取连接列名称。由于此处未指定任何内容,因此使用默认的连接列。
关于java - 如何为单列连接覆盖 @JoinColumn 中默认生成的 SQL 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12522394/