加入非主键列时,JPA @JoinColumn会出现问题

我想基于一个方向连接连接表,这是我的代码:

Class Person { @id String person_sk; int person_id; String Person_name; @OneToMany @joinColumn (name="person_reference_id") List
getAddresses() {} } class Address { @id int person_reference_id (referred from Person); @id int address_id; @id int phone_id; String street_name, zip_code; }

现在当我执行getAddress时,它不起作用,因为我的连接基于person_ref_id,Person类中的@id(primaryKey)列是person_sk。

如果我使用referencedColumn,那么它也不起作用。

  1. JPA不允许引用非PK列 。

  2. 当引用表中存在复合PK时,ReferencedColumn属性用于指定连接列 。

我怎么能做这个工作?

规范化数据库以使用常见的PK-FK关系。 如果需要 – 定义复合PK。

不寻常的数据模型,您可能想重新考虑它。

此外,通常最好使用mappedBy和反向@ManyToOne定义@OneToMany。

JPA不直接支持您的数据模型,但如果您使用的是EclipseLink,则可以使用DescriptorCustomizer定义OneToManyMapping并使用您需要的任何外键或连接条件。