JPA 使用了 set 的哪个实现类

Zun*_*med 2 java collections hibernate jpa

我正在使用休眠。

我有一对多的关系。

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

我的问题是我在这里内部使用了哪种 set 实现?如果我扩展可比较的接口,返回的对象会被排序吗?还是我必须自己排序?

mpr*_*hat 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>
Run Code Online (Sandbox Code Playgroud)

sort 属性的允许值是 unsorted、natural 和实现 java.util.Comparator 的类的名称。

排序的集合实际上表现得像java.util.TreeSetjava.util.TreeMap

文档编辑注释,检查

3.4.6. 集合相关注释

 @Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class)
Run Code Online (Sandbox Code Playgroud)