如何在自引用表层次结构中获取最后一个子节点?

时间:2012-05-02 14:43:08

标签: nhibernate fluent-nhibernate

我有一张表:

public class Cycle     
{
    public Guid Id 
    public int CycleNo 
    public Cycle ParentCycle 
}

其中的数据为:

Id  CycleNo  ParentId  
C1  1         null  
C2  2         C1  
C3  3         C2  

依旧...... 如果我有c1,如何获得最后一个孩子C3(在这种情况下)? 感谢您的宝贵意见..

1 个答案:

答案 0 :(得分:1)

获取节点的完整树:

session.CreateQuery(
    "select c from Cycle c join fetch c.ParentCycle where c.Id = 'C1'"
)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Cycle>();

(或使用Query或CreateCriteria的等效文件)

请参阅:http://ayende.com/blog/4151/nhibernate-tips-tricks-efficiently-selecting-a-tree

然后在内存中遍历它。