【问题标题】:Nhibernate Criteria For Select As选择为的休眠条件
【发布时间】:2012-12-16 08:17:54
【问题描述】:

我想在我的标准中添加一个带有“as”添加的特定列。 意思是: 从 XYZ 中选择 0 AS ID ...

我该怎么做,使用标准?

谢谢!

【问题讨论】:

    标签: c# sql database nhibernate


    【解决方案1】:

    NHibernate Projections 是您正在寻找的功能:

    var projections = Projections.ProjectionList();
    projections
      .Add(Projections.Property("EntityId"))
      .Add(Projections.Property("Code"))
      .Add(Projections.Constant(0), "ID"); // const projection
    
    var list = session
      .CreateCriteria<MyEntity>()
      .SetProjection(projections) // projections
      .SetResultTransformer(new AliasToBeanResultTransformer(typeof(MyEntity)))
      .List<MyEntity>();
    

    前两个(EntityId、Code)代表映射 属性。最后一个投影“ID”是 const,可以设置为 ma​​ppedunmapped 属性“ID”... of MyEntity class

    【讨论】:

    • 我的问题有点不同:Id 字段是我的关键。我正在两个表之间进行外部连接(一对多),这个 Id 是关键列。现在,我需要 id 字段的值为零。例如:SELECT 0 as Id FROM XYZ LEFT OUTER JOIN ZZZ ON XYZ.ID = ZZZ.ID
    • 不要误会我的意思,但你想做什么?上面的 SQL 语句将返回一个列 ID,其行数与 XYZ 表的行数一样多为 0...顺便说一句,我的答案仍然适合那个...只有一个 Projections.Constant(0), "ID")
    • 如果你这样做,你会得到两列 - 一个原始的 id (因为我们需要用左外连接做一个标准 - UnitOfWork.Session.CreateCriteria().CreateAlias ("ZZZ", "zzz", JoinType.LeftOuterJoin) ) 和一列的值为 0。但是,我需要原始 id 的值为零...
    • 不,我不是 :) ...我在说:SELECT codeId, codeName, date, sum(count), 0 AS id FROM XYZ LEFT OUTER JOIN ZZZ ON XYZ.id = ZZZ.id GROUP BY XYZ.codeId, XYZ.codeName, XYZ.date ORDER BY XYZ.codeId 我只想按其他列分组。
    • 好吧,我只是愚蠢....我做了 id 的组属性,但尝试将其设置为 const "0" :S 对不起,非常感谢! :) 实际上,如果不在这里聊天,我将需要一两个小时以上的时间......(:
    猜你喜欢
    • 2011-07-03
    • 2011-05-05
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多