hibernate 集合映射之有序集合

hibernate 有時候會出現集合映射的狀況,通常One-to-many的時候會用到。主要形式爲:java

model:數據庫

 public class TestPerson {
       private Long pid;
       private String pname;
       private String age;
       private Set<TestRole> testRole = new HashSet<TestRole>();
spa

        -------get() set()方法------hibernate

}orm

xml:xml

 <set name="testRole" table="test_role" lazy="true" sort="com.qsfs.util.Compare">
   <key column="TESTPERSOPN" />
   <one-to-many class="com.qsfs.model.TestRole" />// TestRole也是一個類,與testPerson多對一的關係
</set>
排序

若是要查詢出的集合排序好的,那麼有兩種方法:內存

(1)數據庫排序:利用 setbag 或者 map 映射中的 order-by 屬性get

<set name="testRole" table="test_role" lazy="true" order-by="roleName asc">//roleName爲數據庫字段
   <key column="TESTPERSOPN" />
   <one-to-many class="com.qsfs.model.TestRole" />
</set>
table

(2)內存排序 :利用 setbag 或者 map 映射中的 sort 屬性,sort 屬性中容許的值包括 unsortednatural 和某個實現了 java.util.Comparator 的類的名稱
1,sort 屬性值爲:natural

<set name="testRole" table="test_role" lazy="true" sort="natural">//按照compareTo的方式進行排序,應該爲升序

   <key column="TESTPERSOPN" />
   <one-to-many class="com.qsfs.model.TestRole" />
</set>

2,sort 屬性值爲:某個實現了 java.util.Comparator 的類的名稱
  <set name="testRole" table="test_role" lazy="true" sort="com.qsfs.util.Compare">
   <key column="TESTPERSOPN" />
   <one-to-many class="com.qsfs.model.TestRole" />
  </set>

 

package com.qsfs.util;

import java.util.Comparator;
public class Compare implements Comparator{

 public int compare(Object o1, Object o2) {   TestRole r1 = (TestRole)o1;  TestRole r2 = (TestRole)o2;  if(r1 == r2){   return 0;  }  int result = r1.getRid().compareTo(r2.getRid());  return result;//降序爲-result }}

相關文章
相關標籤/搜索