【问题标题】:What does the 'sort' attribute do?“排序”属性有什么作用?
【发布时间】:2013-06-21 07:15:40
【问题描述】:

以下是来自休眠映射文件的 sn-p,属于名为 m1 的类。

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

【问题讨论】:

    标签: java hibernate jakarta-ee hibernate-mapping


    【解决方案1】:

    来自official documentation

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

    它指定您的映射集合是排序的,以及它是按照什么标准排序的。在您的情况下,给出了一个比较器,它定义了两个对象的顺序,因此迭代地定义了所有对象的顺序。

    【讨论】:

    • 如果我删除 sort 属性会怎样?
    • 我认为默认是未排序的。
    • 另见文档中的第 6.3.1 节。
    • 什么时候调用compare 方法?因为我看不到这个属性的相关性..即使我删除它,我也会得到相同的结果
    • 我不太清楚。你试过调试它吗?另外我猜你的数据库中的元素已经排序,所以即使没有sort 属性,你也会得到一个有序的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2011-10-21
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多