0

新しいプロジェクトで初めて JDO (Datanucleus 実装を使用) を使用していますが、JDO アノテーションを使用して 1-N の一方向の所有関係を定義するのに問題があります。私が必要とするのは、が所有者への参照を持たないようSubitemsに、 にのコレクションを持つことです:ItemSubitem

@PersistenceCapable(detachable = "true")
public class Item {
    ...
    @Persistent(defaultFetchGroup = "true")
    Collection<Subitem> subitems;
    ...
}

これで問題ありませんが、リレーションがどの既存の RDBMS 列にマップされるかを定義するにはどうすればよいでしょうか? 私の知る限り、所有された1-Nは、子テーブルにnull不可のテーブル列を作成することでDBで実現されますが、注釈で装飾できる親参照クラスフィールドがありません(そしてしたく​​ありません) .Subitem@Column(name="...")

@ForeignKeyJDO3でアノテーションを適切に使用するにはどうすればよいですか? 注釈は、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;
    ...
}

回答のドキュメント リンクに明確に記載されているとおりです。

4

1 に答える 1

1

JDO(またはJPAも)には「所有された」関係はありません。関係だけです(これは、GAEのデータストアに関連して聞いたことがある用語であり、あなたはそれを使用していません)。

DataNucleus のドキュメントでは、そのようなすべての関係が適切に定義されているので、目的の場所からメニューをナビゲートするだけです

http://www.datanucleus.org/products/accessplatform_3_1/jdo/orm/constraints.html#fk

于 2012-10-02T14:05:23.487 に答える