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 に答える