专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
java
当前位置:首页 > 技术文档 > java >  > 
Hibernate表自参考递归完成排序


sql:
--组织机构
create table Organization(
OrgID varchar2(36) primary key not null,--单位ID
OrgName varchar2(80) not null,--单位名称
ParentID varchar2(36) null--父单位ID
);
插入测试数据

insert into Organization(orgid,Orgname,Parentid) values('1','test1','');
insert into Organization(orgid,Orgname,Parentid) values('5','test2','1');
insert into Organization(orgid,Orgname,Parentid) values('50','test50','5');
insert into Organization(orgid,Orgname,Parentid) values('20','test20','');
insert into Organization(orgid,Orgname,Parentid) values('4','test24','20');
insert into Organization(orgid,Orgname,Parentid) values('3','test3','');
commit;
---查询全部组织,带排序
/**
     * 查询全部组织,带排序
     * @return
     */
    public List<Organization> selectOrganizationAll() {
        return sortOrganization(new ArrayList<Organization>(),orgDao.selectOrganizationAll(),"");
    }
   
    /**
     * 递归完成组织排序
     * @param rList 返回新的List
     * @param oList 老的List
     * @return
     */
    public List<Organization> sortOrganization(List<Organization> rList,List<Organization> oList,String parentid){
        if(null==oList)
        {
            return null;
        }
        Iterator<Organization> it = oList.iterator();
        while(it.hasNext())
        {
            Organization org = it.next();
            if(null==org.getParentid())
                org.setParentid("");
            if(org.getParentid().equals(parentid))
            {
                rList.add(org);
                sortOrganization(rList,oList,org.getOrgid());
            }
        }
        return rList;
    }

/**
     * 查询全部组织
     * @return
     */
    public List<Organization> selectOrganizationAll() {
        return hibernateTemplate.find("FROM Organization");
    }