如何使用Criteria查询转换此连接?

时间:2009-12-22 20:24:17

标签: nhibernate criteria

我的创建查询(HQL)如下所示:

Session.CreateQuery(
   "select a from Article as a join a.Categories c where c.ID = :ID")
   .SetInt32("ID", categoryId)

1 个答案:

答案 0 :(得分:3)

直接向前看起来像这样:

ICriteria query = Session
  .CreateCriteria<Article>("a")
  .CreateCriteria("a.Categories", "c")
  .Add(Expression.Eq("c.ID", categoryId)

还有IdEq表达式,但你不能说哪个id(哪个实体/别名),所以我不相信它。

ICriteria query = Session
  .CreateCriteria<Article>("a")
  .CreateCriteria("a.Categories", "c")
  .Add(Expression.IdEq(categoryId) // a.ID or c.ID?

加入集合时出现问题。您将获得与文章和类别的连接将产生的结果一样多的结果,这可以使文章成倍增加。

使用结果转换器或子查询。请参阅this post