2013-06-21 50 views
0

以下是hibernate映射文件中名为m1的类的片段。'sort'属性是做什么的?

<class name="pojo.m1" table="m1"> 

    <id name="r_no"> 
     <generator class="increment" /> 
    </id> 

    <property name="s_name" /> 

    <map name="map" table="m4" cascade="all" sort="pojo.m4"> 
     <key column="r_no" /> 
     <index-many-to-many class="pojo.m2" column="t1" /> <!-- r_no as index !--> 
     <many-to-many class="pojo.m3" column="t2" /> <!-- r_no + total OR class m3 as key !--> 
    </map> 

</class> 

map标签,有一个名为sort的属性。它有什么作用 ?它在这里命名实现类comparator的类。

public class m4 implements Comparator<m2> { 

    @Override 
    public int compare(m2 o1, m2 o2) { 
     if(o1.getR_no() > o2.getR_no()) 
      return 1; 
     else 
      return -1; 
    } 
} 

回答

2

official documentation

sort (optional): specifies a sorted collection with natural sort order or a given comparator class. 

它指定你的映射集合排序,并通过什么标准将垃圾分类。在你的情况下,给出一个比较器来定义两个对象的顺序,因此迭代地定义所有对象的顺序。

+0

以及如果我删除'sort'属性? –

+0

我认为默认值是未排序的。 –

+0

另请参阅文档中的第6.3.1节。 –