首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate - ICriteria帮助

NHibernate - ICriteria帮助
EN

Stack Overflow用户
提问于 2011-03-28 20:09:28
回答 1查看 125关注 0票数 1

我正在尝试将以下SQL查询转换为NHibernate中的ICriteria。

代码语言:javascript
复制
SELECT DISTINCT m.typeId, t.typeName
FROM Models m, Types t
WHERE m.qualifier=? AND m.typeId IS NOT NULL AND m.typeId = t.typeId

它们都被映射到NHibernate中称为Models和ModelType的类中。ICriteria.List应该返回一个ModelType类型的列表。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-28 23:05:52

有好消息也有坏消息。您可以创建一个返回ModelTypes列表的条件。但是,它们不会被会话管理。原因是,distinct查询只能返回投影,而投影始终是非托管的。

下面的查询将生成与上面类似的查询,因为它在两个实体之间执行内部连接,并根据这两列返回一个不同的集合。结果转换器应该设置为生成一些可以通过属性设置的类型。您可能会返回一个ModelTypes列表,但只需知道它们不会由会话管理。

代码语言:javascript
复制
Session.CreateCriteria<Model>()
   .CreateAlias("Type", "t")
   .Add(Restrictions.Eq("Qualifier", myQualifier)
   .SetProjection(Projections.Distinct(
       Projections.ProjectionList()
          .Add(Projections.Alias(Projections.Property("t.Id"), "Id"))
          .Add(Projections.Alias(Projections.Property("t.TypeName"), "TypeName"))))
   .SetResultTransformer(Transformers.AliasToBean<ModelType>())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5458775

复制
相关文章

相似问题

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