3.4.6. コレクション関連アノテーション


3.4.6.1. コレクション設定の拡張

設定可能
  • @BatchSize を使用したコレクションのバッチサイズ
  • @Where (ターゲットエンティティに適用) または @WhereJoinTable (関係テーブルに適用) を使用する where 句
  • @Check を使用する check 句
  • @OrderBy を使用した句別の SQL の順序
  • @OnDelete(action=OnDeleteAction.CASCADE) を使用した削除カスケード方針
  • @Immutable を使用したコレクション変更不可能性: 設定された場合は、コレクションのエレメントが変更しないよう指定されます (場合によっては若干のパフォーマンスの最適化がもたらされます)。
  • @Persister を使用したカスタムコレクションパーシスタ (使用された永続化方針): クラスは org.hibernate.persister.collectionCollectionPersister を実装する必要があります。
また、ソート比較演算子を宣言することもできます。@Sort アノテーションを使用してください。未ソート、自然、またはカスタム比較演算子から比較演算子タイプを指定します。独自の比較演算子実装を使用する場合は、comparator 属性を使用して実装クラスを表現する必要があります。SortedSet または SortedMap インターフェースのいずれかを使用する必要があることに注意してください。
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
    @JoinColumn(name="CUST_ID")
    @Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class)
    @Where(clause="1=1")
    @OnDelete(action=OnDeleteAction.CASCADE)
    public SortedSet<Ticket> getTickets() {
        return tickets;
    }
詳細については、これらのアノテーションの以前の説明を参照してください。
外部キー制約 (Hibernate により生成される) は、非常に読みにくい名前を持っています。この制約名は @ForeignKey を使用して制約名をオーバーライドできます。このアノテーションはもう一方の制約を参照する関係 inverseName の所有者側に配置する必要があります。
@Entity
public class Woman {
    ...
    @ManyToMany(cascade = {CascadeType.ALL})
    @ForeignKey(name = "TO_WOMAN_FK", inverseName = "TO_MAN_FK")
    public Set<Man> getMens() {
        return mens;
    }
}

alter table Man_Woman add constraint TO_WOMAN_FK foreign key (woman_id) references Woman
alter table Man_Woman add constraint TO_MAN_FK foreign key (man_id) references Man
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.