MySql表T中有id和parentId2个字段[举例]而且parentid是这个表的外键,现在我要如何才能删除一条记录和与该记录有关的子。P的子类可能有无限级,一级有无限个,而且pojo类不能修改,数据表不能修改。递归想了好久没想出来...求助!!! 

解决方案 »

  1.   


    /**
     * 查詢數據。
     *@param parentID 關聯的ID值。
     */
    public List getDatas(int parentID)
    {
      //這裏按parentID查詢數據。
      //如果查詢出來的數據不為空,或空白例如:List<Data> lists!=null && lists.size()>=1
         for(Data d: lists)
         {
            lists.addAll(getDatas(d.getID()));
         }
         return lists;
    }
      

  2.   

    id   parentId   name 
     1    null       ZG
     2    1          GD
     3    2          GZ
     4    2          SZ
     5    1          FJ
     6    5          NP
     7    6          JY
     8    7          None
     9    8          None
    类似于这个表,要做到删除FJ的时候删除属于FJ的所有记录这个要如何处理?
     
      

  3.   

     FJ是FK吗,如果是的话,就把所有关于FJ的都一起删除啊,事务不要设置为自动提交,而应手动提交就可以来了啊。
      

  4.   

    这个要用递归来实现,我不太懂MySQL,大概的思路是这样的:void deleteID(id){
      if(parentID==id的记录不存在){  //说明id没有子记录。
          直接删除id对应的记录。
      }else{
        找出所有满足parentId==id的记录的id,把结果放入数组x(或List)中。
        对数组x(或List中)的每一个元素:delete(x[i]);
      }
    }