新しいプロジェクトで初めて JDO (Datanucleus 実装を使用) を使用していますが、JDO アノテーションを使用して 1-N の一方向の所有関係を定義するのに問題があります。私が必要とするのは、が所有者への参照を持たないようSubitems
に、 にのコレクションを持つことです:Item
Subitem
@PersistenceCapable(detachable = "true")
public class Item {
...
@Persistent(defaultFetchGroup = "true")
Collection<Subitem> subitems;
...
}
これで問題ありませんが、リレーションがどの既存の RDBMS 列にマップされるかを定義するにはどうすればよいでしょうか? 私の知る限り、所有された1-Nは、子テーブルにnull不可のテーブル列を作成することでDBで実現されますが、注釈で装飾できる親参照クラスフィールドがありません(そしてしたくありません) .Subitem
@Column(name="...")
@ForeignKey
JDO3でアノテーションを適切に使用するにはどうすればよいですか? 注釈は、FK 制約の名前を受け入れますが、対応する FK テーブルと列の指定は受け入れません。定義上、FK は ref です。共通キーに基づく2つのテーブル間の制約ですが、他のテーブルと共通キーを指定できないようです( Datanucleus JDO docs の @ForeginKey )。
編集:
@Element(column="...")
代わりに注釈を使用する必要があります:
@PersistenceCapable(detachable = "true")
public class Item {
...
@Persistent(defaultFetchGroup = "true")
@Element(column="itemId")
Collection<Subitem> subitems;
...
}
回答のドキュメント リンクに明確に記載されているとおりです。