Hibernate多对多映射关系中自定义排序

    SSH联合开发过程中发现当多对多的关系存在时,比如role和function,多对多的关系,我想通过role获得这个role的所有的function并且按照自己想要的方式进行排序,但是发现配置的时候没找到合适的方式。只好自己重写了Comparable的compareTo方法,并且将封装好的数据转为treeSet对象传递到前台实现数据的有序化。

    Function对应的bean类:

public class Function implements Comparable<Function>{

	private Integer functionId;
	private String functionName;
	private String functionUrl;
	private Integer order;
	
	private FunctionGroup functionGroup;
	private Set<Role> roles = new HashSet<Role>();
	
	public int compareTo(Function func) {
		return this.order - func.order;
	}
	
	
}


获取Function对象的业务代码(这个地方是将function封装到group当中,这样在前台获取的时候直接对group进行遍历即可,可以重点看下new TreeSet<Function>()部分):

public List<FunctionGroup> findMenuByUser(User user) {
		// 拿到functionList,包含了所有的function
		List<Function> functionList = menuDao.findMenuByUser(user);
		
		// 对functionList进行分组提取functionGroup并封装到functionGroup对象当中去
		// 存放FunctionGroup分组对象
		List<FunctionGroup> functionGroupList = new ArrayList<FunctionGroup>();
		
		FunctionGroup functionGroup = null;
		// 声明并初始化一个functionGroup中用于封装其function的List集合有序的
		List<Function> functionListOrder = new ArrayList<Function>();
		
		if(functionList != null && functionList.size() > 0){
			String functionGroupName = "";
			for(Function function : functionList){
				// 如果保存的分组名称与当前功能function的分组名称不一致的话就说明是新的分组
				if(!functionGroupName.equals(function.getFunctionGroup().getGroupName())){
					// 新的分组就要在分组List中添加
					if(functionGroup != null){

						functionGroup.setFunctions(new TreeSet<Function>(functionListOrder));
						
						functionGroupList.add(functionGroup);
					}
					// 将分组名称替换为当前function的分组的名称
					functionGroupName = function.getFunctionGroup().getGroupName();
					functionGroup = function.getFunctionGroup();
					functionListOrder.clear();
				}
			// 如果保存的分组名称与当前功能function的分组名称一致的话不是新的分组
			// 那么该功能项function就是functionGroup就是function的分组,更新functionGroup中function集合
				functionListOrder.add(function);
				
			}
			// 添加最后一个分组
			if(functionGroup != null){
				functionGroup.setFunctions(new TreeSet<Function>(functionListOrder));
				
				functionGroupList.add(functionGroup);
			}
			
		}



你可能感兴趣的:(Hibernate,排序)