Tree表如下:   
    NodeId   ParentId     NodeName   
         1          0           一
         2          1           二
         3          1           三
         4          2           四
         5          3           五
         6          3           六
         7          4           七
         8          5           八
  已知:Nodeid   能得到   NodeName的递归连接字符串吗?   
  例:     已知               结果   
        NodeId:2              四七   
        NodeId:3              五六八  
        NodeId:5              八   
     
Tree对应的类是
class Item{
  private long nodeId;
  private long parentId;
  private String nodeName;
}请问递归查询方法怎么写就是已知一个item,得到他下面的所有item的方法,用的是hibernate

解决方案 »

  1.   

    场景:常见的领导关系树结构,知道某一节点ID,要查出此节点的所有下级(直接下级和间接下级),此时需要使用SQL递归语句。oracle中的递归语句:  start   with     connect   by   prior  .例子: pid  id
      a   b   
      a   c     
      a   e   
      b   b1   
      b   b2   
      c   c1   
      e   e1   
      e   e3   
      d   d1   
        
      指定pid=a,选出   
      a   b   
      a   c     
      a   e   
      b   b1   
      b   b2   
      c   c1   
      e   e1   
      e   e3  
    SQL语句:
      select   parent,child   from   test   start   with   pid='a'   
      connect   by   prior   id=pid 
      

  2.   

    3楼的抄袭完别人的也不给个连接地址, 真服了你
    http://www.javaeye.com/topic/351974
      

  3.   

    durby 和 oracle要都兼容
      

  4.   

    我也遇到这样的情况~若是简单的实现功能不需要用递归查询。
    可以用一个码来标识父子关系
     NodeId  ParentId    NodeName     code
         u1         null        一       u1
          u2         u1          二       u1u2
          u3         u2          三       u1u2u3
    查询根据这个code来模糊查询就可以了~
    另外网上说hibernate不支持递归查询。
    即使要实现也需要写存储过程~这个方法我没试过。
      

  5.   

    用code,有一个方面不好就是树的结果变动,code也要跟着变动。
    所以要避免根节点附近的变动,不过也可以在后台递归变动code,要比递归查询方面的多。
      

  6.   

    不知道你说的另外一个数据库有没有Oracle的递归函数 如果没有的话LZ可尝试写个存储过程
      

  7.   

    可以将Item改写成这样
    class Item{ 
      private Item parent;
      private long nodeId; 
      private long parentId; 
      private String nodeName;
      private Set<Item> children; 

    这涉及到hibernate的自关联,可以去网上查查资料。
      

  8.   

    sql 很强大的,什么都能做! 花点心思 拼一拼