首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate: DetachedCriteria多次嵌套

NHibernate: DetachedCriteria多次嵌套
EN

Stack Overflow用户
提问于 2011-02-14 15:50:12
回答 1查看 953关注 0票数 3

在多次嵌套之后,我无法让DetachedCriteria正常工作,原因是DetatchedCriteria只能访问更高一层的别名实体。

例如,以下代码不起作用:

代码语言:javascript
复制
var secondNestedCriteria = DetachedCriteria.For<Baz>("baz")
    .SetProjection(Projections.Id())
    .Add(Restrictions.EqProperty("baz.FooName", "foo.Name") // Doesn't work
    .Add(Restrictions.EqProperty("baz.BarName", "bar.Name");

var firstNestedCriteria = DetachedCriteria.For<Bar>("bar")
    .SetProjection(Projections.Id())
    .Add(Restrictions.EqProperty("bar.FooName", "foo.Name")
    .Add(Subqueries.Exists(secondNestedCriteria);

var criteria = Session.CreateCriteria<Foo>("foo")
    .Add(Subqueries.Exists(firstNestedCriteria)
    .List<Foo>();

有没有人知道不需要使用HQL的变通方法?

EN

回答 1

Stack Overflow用户

发布于 2011-02-14 18:19:28

我从来没有遇到过这个问题,我通常使用PropertyIn来连接子查询,但您不能总是这样做。

在本例中,您可以通过使用第二个查询的属性来修复它:

代码语言:javascript
复制
var secondNestedCriteria = DetachedCriteria.For<Baz>("baz")
    .SetProjection(Projections.Id())
    .Add(Restrictions.EqProperty("baz.FooName", "bar.FooName") // is equal to foo.Name
    .Add(Restrictions.EqProperty("baz.BarName", "bar.Name");

如果这对你的真实案例没有帮助,你可以要求真实案例的解决方案。我不认为有一个通用的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4989875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档