nhibernate之使用 NHibernate Criteria 对多个属性/列求和

thcjp 阅读:79 2025-06-02 22:19:02 评论:0

有谁知道如何使用 NHibernate 标准表达以下 SQL 语句?

SELECT SUM(Val1 + Val2) FROM SomeTable 

看起来很简单,但 AFAIK 我似乎无法找到一种方法来做到这一点,而不返回一个值数组,分别返回 Val1 + Val2 的总和,然后从数组中求和,我想避免这种情况。

请您参考如下方法:

在@Jaguar 在他的回答中提到的博客文章的评论中 NHibernate and the missing OperatorProjection是另一种解决方案:

session.CreateCriteria().SetProjection( 
    Projections.Property<SomeType>(val => val.Id), 
    Projections.Property<SomeType>(val => val.Duration), 
    Projections.SqlFunction( 
        new VarArgsSQLFunction("(", "+", ")"), 
        NHibernateUtil.Double, 
        Projections.Property<SomeType>(val => val.Duration), 
        Projections.Constant(1) 
    ) 
).List(); 

所有功劳归于 Tomek .

这可能看起来像:
Projections.Sum( 
    Projections.SqlFunction( 
        new VarArgsSQLFunction("(", "+", ")"), 
        NHibernateUtil.Int32, 
        Projections.Property<SomeTableType>(val => val.Val1), 
        Projections.Property<SomeTableType>(val => val.Val2) 
    ) 
) 

特别 VarArgsSQLFunction 很有用。


标签:hibernate
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号