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)數據庫排序:利用 set,bag 或者 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)內存排序 :利用 set,bag 或者 map 映射中的 sort 屬性,sort 屬性中容許的值包括 unsorted,natural 和某個實現了 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 }}