1

我的实体中有一个单向的 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

4

1 回答 1

1

单向一对多映射必须使用连接表。您通过指定 @OneToMany.mappedBy 元素来暗示双向一对多。结果,映射从“拥有”映射(由“mappedBy”指定的映射)中获取连接列名称。由于此处未指定任何内容,因此使用默认连接列。

于 2012-09-21T22:43:58.690 回答