2

私は休止状態を使用しています。

私は1対多の関係を持っています。

@OneToMany(mappedBy = "enrollmentSetupCategory", fetch = FetchType.EAGER, cascade = CascadeType.ALL )
    private Set<EnrollmentSetupCategoryLevel> enrollmentSetupCategoryLevels;

私の質問は、ここで内部的に使用したセットのどの実装ですか?同等のインターフェースを拡張すると、返されるオブジェクトはソートされますか?または、自分で並べ替える必要がありますか?

4

2 に答える 2

5

Hibernateはソートされたコレクションマッピングをサポートします。コンパレータを指定してソートを行うことができます。

ドキュメントから

Hibernateは、java.util.SortedMapおよびjava.util.SortedSetを実装するコレクションをサポートします。マッピングファイルでコンパレータを指定する必要があります。

<set name="aliases" 
            table="person_aliases" 
            sort="natural">
    <key column="person"/>
    <element column="name" type="string"/>
</set>

<map name="holidays" sort="my.custom.HolidayComparator">
    <key column="year_id"/>
    <map-key column="hol_name" type="string"/>
    <element column="hol_date" type="date"/>
</map>

sort属性に許可される値は、ソートされておらず、自然であり、java.util.Comparatorを実装するクラスの名前です。

並べ替えられたコレクションは、実際にはまたはのように動作しjava.util.TreeSetます java.util.TreeMap

ドキュメントから注釈を編集し、チェックします

3.4.6。コレクション関連の注釈

 @Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class)
于 2012-04-27T06:10:25.453 に答える
2

Hibernate独自の実装を使用します-http Set: org.hibernate.collection.PersistentSet //docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/collection/PersistentSet.html このクラスはインターフェースを実装していないComparableため、ソートする必要があります自分で、またはsetのソート可能な実装にキャストします(例TreeSet)。

于 2012-04-27T06:24:17.360 に答える