Java 如何覆盖@JoinColumn中为单个列联接生成的默认SQL名称

Java 如何覆盖@JoinColumn中为单个列联接生成的默认SQL名称,java,jpa,Java,Jpa,在我的实体中,我有一个单向的一个对象 @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="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;

引用

单向一对多映射必须使用联接表。通过指定@OneToMany.mappedBy元素,意味着是双向的一对多。因此,映射从“拥有”映射(由“mappedBy”指定的映射)中获取联接列名。由于此处未指定任何值,因此将使用默认的联接列。

单向一对多映射必须使用联接表。通过指定@OneToMany.mappedBy元素,意味着是双向的一对多。因此,映射从“拥有”映射(由“mappedBy”指定的映射)中获取联接列名。由于此处未指定任何连接,因此使用默认的连接列

private Pub pub;

@Id
@XmlTransient
    public Pub getPub() {
    return pub;
}

public void setPub(Pub pub) {
    this.pub = pub;
}