java - 如何为单列连接覆盖 @JoinColumn 中默认生成的 SQL 名称

标签 java jpa

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

相关文章:

java - SWT 浏览器 - 禁用垂直滚动我如何隐藏它?

java - 如何将表与该表的实体类中 View 的一列连接起来

java - 用 Java 计算 Pi

java - 在play框架中,无法编译文件XX.java。引发的错误是 : The import XXX cannot be resolved in eclipse

java - 如何使用 OKHTTP 取消请求

c# - 保持库无依赖性

Spring 启动: Is this correct way to save a new entry which has ManyToOne relationship?

java - Spring Boot findById 不起作用,但 findAllById 工作正常

java - JPA/Hibernate - 父类(super class)查询时如何确定子类类型?

java - 如何在条件查询中的非实体字段上创建orderby?