1

我想基于单向连接连接表,这是我的代码:

Class Person {

@id
String person_sk;

int person_id;

String Person_name;

@OneToMany
@joinColumn (name="person_reference_id")
List<address> 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 那么它也不起作用。

4

2 回答 2

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

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

我怎样才能使这项工作?

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

于 2012-07-09T08:45:07.553 回答
-1

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

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

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

于 2012-07-09T12:58:46.690 回答