问题:
我有对象层次结构A => B => C
- A
引用B
和B
引用C
。 C
包含我正在尝试查询的Name
属性。我试图调用以下代码来获取A's
ICriteria criteria = session.CreateCriteria(typeof (A)).Add(Restrictions.Eq("B.C.Name", "Test"));
return criteria.List<A>();
我收到错误“无法解析属性:B.C.Name of:A”。我的所有映射都很好看,B
包含C
属性,C
包含Name
属性。我还验证了映射是正确的,因为我正在运行其他成功检索所请求数据的查询。
基本上,我正在尝试获取与A's
中的名称匹配的所有C
。那么如何编写可以执行此操作的查询呢?
谢谢,
凯尔
答案 0 :(得分:2)
使用QueryOver:
session.QueryOver<A>()
.JoinQueryOver(a => a.B)
.JoinQueryOver(b => b.C)
.Where(c => c.Name == "Test")
.List<A>();
您也可以使用别名。