码迷,mamicode.com
首页 > Web开发 > 详细

hibernate 集合映射之有序集合

时间:2015-09-24 19:49:17      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

hibernate 有时候会出现集合映射的情况,一般One-to-many的时候会用到。主要形式为:

model:

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

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

}

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 属性

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

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

 

 

 

    

hibernate 集合映射之有序集合

标签:

原文地址:http://my.oschina.net/u/1169535/blog/510781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!