hibernate中一对多Set的排序问题

阅读更多

hibernate中,我们往往会使用一对多等关联。

 

 

以一对多的DeptEmp为例:

 

Dept.java:

package com.yun.hibernate.vo;

 

import java.util.HashSet;

import java.util.Set;

 

public class Dept {

   private Integer deptId;

   private String deptName;

   

   private Set emps=new HashSet();

 

   public Set getEmps() {

      return emps;

   }

   public void setEmps(Set emps) {

      this.emps = emps;

   }

   

   public Integer getDeptId() {

      return deptId;

   }

   public void setDeptId(Integer deptId) {

      this.deptId = deptId;

   }

   public String getDeptName() {

      return deptName;

   }

   public void setDeptName(String deptName) {

      this.deptName = deptName;

   }

}

 

 

 

 

Emp.java:

 

package com.yun.hibernate.vo;

 

import java.util.Date;

 

public class Emp {

   private Integer empId;

   private String empName;

   

   private Dept dept=new Dept();

   

   public Dept getDept() {

      return dept;

   }

   public void setDept(Dept dept) {

      this.dept = dept;

   }

   public Integer getEmpId() {

      return empId;

   }

   public void setEmpId(Integer empId) {

      this.empId = empId;

   }

   public String getEmpName() {

      return empName;

   }

   public void setEmpName(String empName) {

      this.empName = empName;

   }
}

 

 

 

 

Dept.hbm.xml:

 






 

   

      

         

      

      

       

           

           

       

   

   



 

 

Emp.hbm.xml:

 

 






 

 

   

      

         

      

      

      

      

 

   



 

 

   

我们在Dept中为了实现一对多,所以设置了一个Set集合,但是我们知道,Set是无序的,而我们在遍历的时候,基本不可能需要无序的遍历,那么就需要对Set进行排序,我们可以使用实现类TreeSet,但是比较麻烦。

 

最好的解决办法是:直接在hbm文件中配置一下就可以进行排序了:

 

Set上配置一个order-by=" *** ”属性就可以进行排序了,

 

 






 

         

                   

                            

                   

                   

               

                 

                 

             

         

         



 

 

其中order-by="empid asc" empidemp表中的字段,而不是Emp.hbm.xml中的属性。

 

 

当然排序的时候可以指定多个字段进行排序:


 

你可能感兴趣的:(hibernate,一对多,Set,排序问题)