数据表treeEm结构
name   id    parentid现在只是知道一个ID,也不知道这个ID下面有几层
怎么找出所有的ID,把他们写入一个List

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【andrew_zx】截止到2008-07-08 15:57:12的历史汇总数据(不包括此帖):
    发帖的总数量:31                       发帖的总分数:690                      每贴平均分数:22                       
    回帖的总数量:24                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:18                       结贴的总分数:440                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:13                       未结的总分数:250                      
    结贴的百分比:58.06 %               结分的百分比:63.77 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    对树形结构遍历啊,将得到的数据组成字符串,最后压到list里就可以了,
      

  3.   

     
    如果你是oracle数据库,那么可以select id from treeEm
     start with id='your business id' --在这写入你想要查找的初始节点
     connect by prior id = parentid这语句可以返回 你输入的节点下的所有节点,然后把结果些入list即可
      

  4.   

    写一个public Bean getChild(int parentId);给一个父ID,得到子数据条目的一个JavaBean,如果没有子数据条目则返回null。
    List<Bean> list = new ArrayList<Bean>();
    int id = ##;
    Bean b = null;
    while((b=getChild(id))!=null){
        id=b.getId;
        list.add(b);
    }
    return b;
      

  5.   

    slqserver2005:with showtree(id,parentid)
    as
    (
       select top 1 id,parentid from form where id=1
       union all
       select t.id,t.parentid from form  as t join showtree on t.parentid=showtree.id
    )
    SELECT id,parentid FROM showtree order by parentid 
      

  6.   

    我需要做这件事是再DAO这层
    public List findChildId (String parentId) { 
            String queryStr = "select vg.id from treeEm as vg where vg.parent=?  = '"+parentId'";
    list.add(getHibernateTemplate().find(queryStr));
    .....
    return list;
    }我就是想再这里输入一个parentId的字符串,输出一个这个节点以下Id得list总计,老是这段递归写得有问题,有人能指导一下吗 谢谢了
      

  7.   

    List 获得子id(父id){
       ...
    }void 获得子id(父id,List result){
      List temp=获得子id(父id);
      result.addAll(temp);
      遍历temp中的子{
         获得子id(子id,List result){
      }
    }
    调到方法:
    List allChlid=new ArrayList();
    获得子id(父id,List allChlid);
    allChlid中就是递归得到的所有子id
      

  8.   

    List 获得子id(父id){
       ...
    }void 获得子id(父id,List result){
      List temp=获得子id(父id);
      result.addAll(temp);
      遍历temp中的子{
         获得子id(子id,List result){
      }
    }
    调到方法:
    List allChlid=new ArrayList();
    获得子id(父id,List allChlid);
    allChlid中就是递归得到的所有子id
      

  9.   

    我现在还不会Spring.所以,楼主的框架我也不会用,总觉得getHibernateTemplate().find(queryStr) 这个调用返回的应该是List对象.所以,那个list.add(getHibernateTemplate().find(queryStr));是不是应该是list.addAll()方法?下面是一个效率低下的办法,楼主看懂意思,应该就可以出现结果.如果要提高效率,可能要复杂一些了.可以想办法一条SQL搞出结果这样可能要好一些.public List findChildId (String parentId) { 
            List list = new LinkedList();
            findChildId0(list,parentId);
            return list;
    }private void findChildId0 (List list,String parentId) { 
            String queryStr = "select vg.id from treeEm as vg where vg.parent=?  = '"+parentId'"; 
            List result = getHibernateTemplate().find(queryStr); 
            if(result!=null && result.size()>0){
                    list.addAll(result);
                    for(Iterator itr=result.iterator();itr.hasNext();){
                            String pId = (String)itr.next();
                            findChildId0(list,pId);
                    }
            }

      

  10.   

    谢谢 preferme  太合适了