gpt4 book ai didi

java - 当我进行联接时,为什么必须指定实际的列名称而不是字段名称?

转载 作者:行者123 更新时间:2023-12-01 04:17:13 25 4
gpt4 key购买 nike

One to many documentation

特别是在这一点上:

@OneToMany
@JoinColumn(name="PART_ID")
public Set<Part> getParts() { return parts; }

我一定要指定吗

name="PART_ID"

即数据库中的实际列名,而不是说

name="partId"

其中 partIdPart 类中的 partId 数据成员。指定实际的列名称 PART_ID 是否会达不到目的?

最佳答案

当您执行联接时,on 子句使用两个表中的列,无法保证所使用的列是相邻表的主键。您指示源实体映射表上的哪一列需要用于连接。此外,无法保证字段名称与表中的列名称不同,因为 @Column 可以将任何字段映射到任何列。

如果 JPA 不允许指定 JoinColumn,它将对您的数据库结构强制执行规则。想想当尝试在现有数据库上使用 JPA 时这会产生什么影响,如果数据库不满足这些条件,这可能意味着大量的代码更改。我认为规范编写者允许指定列名称是一个非常明智的选择。指定 JoinColumn 甚至 Column 为架构提供了额外的灵 active 。

如果您想省略联接列的指定,您始终可以遵循默认的 JPA 命名约定。

关于java - 当我进行联接时,为什么必须指定实际的列名称而不是字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com