@Relationship の使用
Contact および PhoneNumber POJO クラス定義は、@Relationship アノテーションを使用して、対応する Caché スキーマとの間に一対多のリレーションシップを作成します。 Contact スキーマがリレーションシップの単一側を形成し、PhoneNumber スキーマがリレーションシップの多数側を形成します。リレーションシップは、Contact の phoneNumbers プロパティと PhoneNumber の owner プロパティを使用して定義します。
Contact
...
@Relationship(type=RelationshipType.ONE_TO_MANY,inverseClass=
"contacts.PhoneNumber",inverseProperty="owner")
public List<PhoneNumber> phoneNumbers;
...
このアノテーションでは以下の項目を指定します。
-
Contact から見たリレーションシップ・タイプは一対多です。
-
リレーションシップをサポートする Contact のプロパティは phoneNumbers です。
-
リレーションシップの相手側を形成する逆クラスは PhoneNumber です。
-
PhoneNumber のリレーションシップをサポートするプロパティは owner です。
Caché の Contact クラスで対応するリレーションシップ定義は、以下のとおりです。
Relationship phoneNumbers As contacts.PhoneNumber(JAVATYPE = "java.util.List")
[ Cardinality = many, Inverse = owner ];
PhoneNumber
...
@Relationship(type=RelationshipType.MANY_TO_ONE,
inverseClass="contacts.Contact", inverseProperty="phoneNumbers")
private Contact owner;
...
このアノテーションでは以下の項目を指定します。
-
PhoneNumber から見たリレーションシップ・タイプは一対多です。
-
リレーションシップをサポートする PhoneNumber のプロパティは owner です。
-
リレーションシップの相手側を形成する逆クラスは Contact です。
-
Contact のリレーションシップをサポートするプロパティは phoneNumbers です。
Caché の PhoneNumber クラスで対応するリレーションシップ定義は、以下のとおりです。
Relationship owner As contacts.Contact(JAVATYPE = "contacts.Contact")
[ Cardinality = one, Inverse = phoneNumbers ];
管理ポータルに表示される PhoneNumbers テーブルは、以下のとおりです。このテーブルには [所有者] 列があり、Contact ID 値が含まれています。
管理ポータルに表示される Contact テーブルは、以下のとおりです。このテーブルには PhoneNumber の情報は含まれていません。リレーションシップに関する情報は、1 か所にのみ格納する必要があります。