1

一对多文档

具体在这一点:

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

我是否必须指定

name="PART_ID"

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

name="partId"

partId类中的partId数据成员在哪里Part。指定实际的列名不会破坏PART_ID目的吗?

4

2 回答 2

0

It's because you can join on a column not represented by a field in the target entity, e.g. a parent/child relationship where the Child object does not contain a reference to the Parent object.

于 2013-10-11T16:50:08.100 回答
0

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

如果 JPA 不允许JoinColumn指定 ,它将在您的数据库结构上强制执行规则。想想当试图在现有数据库上使用 JPA 时这会产生什么影响,如果数据库不满足这些条件,这可能意味着大量代码更改。我认为规范编写者允许指定列名是一个非常合理的选择。指定JoinColumn或什Column至为体系结构增加了一层灵活性。

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

于 2013-10-11T16:20:41.680 回答