JPA:@ManyToOne 关系的默认列名映射

发布于 2024-09-28 04:51:39 字数 447 浏览 6 评论 0原文

当我们有一个类:

@Entity
Order implements Serializable {
    @Id
    private Integer id;
    ...
}

并且:

@Entity
OrderLine implements Serializable {
    @Id
    private Integer id;

    @ManyToOne
    Order order;
    ...
}

属性order将映射到什么行名称

order_id、ORDER_ID 还是 Order_id?

(故意省略 @JoinColumn(name='order_id'))

When we have a class:

@Entity
Order implements Serializable {
    @Id
    private Integer id;
    ...
}

and:

@Entity
OrderLine implements Serializable {
    @Id
    private Integer id;

    @ManyToOne
    Order order;
    ...
}

What row name will the property order map to?

order_id, ORDER_ID or Order_id?

(ommiting the @JoinColumn(name='order_id') is deliberate)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三寸金莲 2024-10-05 04:51:39

我可能不明白你的问题。但是,您不需要像下面这样的东西吗?

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="order_id", nullable=false)
Order order;

这里有一些示例

I might not understand your question. However, don't you need something like below?

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="order_id", nullable=false)
Order order;

here are some examples

£冰雨忧蓝° 2024-10-05 04:51:39

以下是 JPA 1.0 规范中有关 JoinColumn 注释的内容:

9.1.6 JoinColumn注解

...

name注释元素定义
外键列的名称。
其余注释元素
referencedColumnName 除外)
参考此专栏并有相同的
列的语义
注释。

如果只有一个连接列,并且
如果 name 注释成员是
缺少,连接列名称是
形成为串联
以下:参考文献的名称
关系属性或领域
引用实体; “_”;的名字
引用的主键列。如果
没有这样的参考
关系属性或字段
实体(即使用连接表),
连接列名称的形式为
以下内容的串联:
实体名称; “_”;的名字
引用的主键列。

...

因此,在您的示例中,外键列的默认名称为 order_id

参考

  • JPA 1.0规范
    • 第 9.1.6 节“JoinColumn 注释”

Here is what the JPA 1.0 specification writes about the JoinColumn annotation:

9.1.6 JoinColumn Annotation

...

The name annotation element defines
the name of the foreign key column.
The remaining annotation elements
(other than referencedColumnName)
refer to this column and have the same
semantics as for the Column
annotation.

If there is a single join column, and
if the name annotation member is
missing, the join column name is
formed as the concatenation of the
following: the name of the referencing
relationship property or field of the
referencing entity; "_"; the name of
the referenced primary key column. If
there is no such referencing
relationship property or field in the
entity (i.e., a join table is used),
the join column name is formed as the
concatenation of the following: the
name of the entity; "_"; the name of
the referenced primary key column.

...

So in your example, the default name of the foreign key column would be order_id.

References

  • JPA 1.0 specification
    • Section 9.1.6 "JoinColumn Annotation"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文