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中的属性。

 

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

 

使用注解也可以进行排序,参考: 

http://blog.csdn.net/jz19890704/article/details/7229333

 

 

 

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