2012-04-27 5 views
1

私は休止状態を使用しています。JPAが使用するセットの実装クラス

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

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

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

答えて

1

あなたはSetのHibernateの独自imlementation使用します - あなたは自分でそれを並べ替えるか、いくつかの並べ替え可能な実装にキャストする必要がありますので、Comparable intefaceを実装していませんorg.hibernate.collection.PersistentSethttp://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/collection/PersistentSet.html このクラスを設定します(例:TreeSet)。

+0

私が探しているもの。 thanks –

+0

PersistentSetをTreeSetにキャストするとClassCastExceptionがスローされます –

4

ソート済みコレクションのマッピングをサポートしているため、ソートを行うコンパレータを指定できます。 docs

休止状態から

はjava.util.SortedMapと java.util.SortedSetを実装するコレクションをサポートしています。ソート属性の値は、ソートされていない自然ではjava.util.Comparatorを実装するクラスの名前 ある可

<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> 

:あなたはマッピング ファイルにコンパレータを指定する必要があります。

ソートされたコレクションは実際にはjava.util.TreeSetまたは java.util.TreeMapのように動作します。 Docsから

[アノテーション編集、

3.4.6をご確認ください。コレクション関連の注釈

@Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class) 
+0

お返事ありがとうございます。これは、私が並べ替えのために使用する必要がありますこのコンパレータを冬眠を見ているようなものです。私のクラスを比較可能にするかどうか疑問に思っています。それは内部的には大丈夫ですか?私は同等のクラスです。指定された順序でソートする必要がありますか? –

+0

hibernateのドキュメントを見ると、Comparable is not anオプション、http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/annotations/SortType.html – mprabhat

関連する問題