本帖最后由 tanshulin520 于 2011-10-12 22:11:16 编辑

解决方案 »

  1.   

    看你的写法,这行代码应该只查第一层的数据?
    List<product> list = pd.GetProductDao();
      

  2.   

    我觉得要递归遍历,多次查询数据库,每次的id后变成parentid再查询
      

  3.   

    看我们项目数据:
    最上层:
    1 WB C   1
    依次:
    2 WB Ca  1  
    4 WB Cab 0
    5 WB Cac 0
    22 WB Cb  1
    23 WB Cba 0
    25 WB Cbc 0
    说明:c下面包含ca,cb,
    这些数据均在一张表中,ca下面有cab,cac等等,后面的1和0表示是否拥有子层级即:是否已经是最下层。。
    每次根据点击传递树状上层代码,模糊查询下一级。通过每次为模糊查询条件增加一级来查
    第二种方式:
    最上层
    1 20057 G0114 G 1
    2 20058 G0119 G 1
    3 20059 G0084 G       1
    依次:
    1 20054 G0110 G0084   1
    2 20056 G0113 G0084 1
    3 20048 G0102 G0084   1
    依次:
    1 20053 G0103 G0102   0
    这些数据在一张表中,最上层G,下面包括G0084,再下面包括G0102,根据后面1和0判断是否还有下层。。即最下层。。
    每次根据点击传递上层树状代码,查询下级代码、两种方式都可以
      

  4.   

    忘记贴递归了:
    /**
     * @param PostCode
     *          根据父节点获取所有子节点岗位编号
     * @return  树的子结点集合
     */
    @SuppressWarnings("unchecked")
    public List<JobType> getPostCodeChilds(String postCode) {
    List<JobType> ret = new ArrayList<JobType>();
    List<JobType> retRecursive = null;
    List<JobType> children = getChildrenNodes(postCode); for(JobType job0 : children){
    String displayOrder = job0.getDisplyOrder();
    if(!CommUtil.isNull(displayOrder) && displayOrder.equals("po")){
    ret.add(job0);
    }else{
    retRecursive = getPostCodeChilds(job0.getJobTypeCode());
    if(ret.size() == 0){
    ret = retRecursive;
    }else{
    ret.addAll(retRecursive);
    }
    }
    }
    return ret;
    }红色部分为传递上层节点 查询数据库,得出下层节点。。
    蓝色部分为递归调用,,反复查询下面所有的节点。。
    根据displayOrder参数为判断是否还有下一级
    没有的话 单层就不再递归。。知道所有的都没有下一级,,,就是最终的数据。
      

  5.   

    insert into product values(9990008,'军事类',null);
    insert into product values(9990009,'军事1',9990008);
    insert into product values( 9990009 ,'军事2',9990008);
    insert into product values(9990010,'军事1-1-1',9990009);
    这个表因该是字段id,名字,父id,直接查询不就好了嘛,用什么递归啊
      

  6.   

    lz那个表中的数据来看 ,上面我已经说明了。。不满足递归的条件
    我上面举了两个例子。。第二个例子是通过递归查询实现的,第一个通过模糊查询实现
    两种实现方式的数据不一样。。LZ那样的数据无法递归。。数据没有什么特别做起来难度较大