3.4.6.2.3. インデックス化されたコレクションを持つ双方向の関係


一方がインデックス化されたコレクションである双方向の関係 (@IndexColumn@org.hibernate.annotations.MapKey、または @org.hibernate.annotations.MapKeyManyToMany として表されます) は特別な注意が必要です。関連するクラスのプロパティがインデックス化された値を明示的にマップする場合は、mappedBy の使用が許可されます。
@Entity
public class Parent {
    @OneToMany(mappedBy="parent")
    @org.hibernate.annotations.IndexColumn(name="order")
    private List<Child> children;
    ...
}

@Entity
public class Child {
    ...
    //the index column is mapped as a property in the associated entity
    @Column(name="order")
    private int order;

    @ManyToOne
    @JoinColumn(name="parent_id", nullable=false)
    private Parent parent;
    ...
}
Copy to Clipboard Toggle word wrap
ただし、子クラスでこのようなプロパティが存在しない場合は、関係を実際に双方向として考えることはできません (もう一方で利用可能でない関係の一方で利用可能な情報が存在します: 索引)。この場合は、コレクションを mappedBy としてマップできません。代わりに、以下のマッピングを使用できます。
@Entity
public class Parent {
    @OneToMany
    @org.hibernate.annotations.IndexColumn(name="order")
    @JoinColumn(name="parent_id", nullable=false)
    private List<Child> children;
    ...
}

@Entity
public class Child {
    ...
    @ManyToOne
    @JoinColumn(name="parent_id", insertable=false, updatable=false, nullable=false)
    private Parent parent;
    ...
}
Copy to Clipboard Toggle word wrap
このマッピングでは、関係の collection-valued 側が外部キーを更新することを担当します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat