NHibernate,求和查询
如果我定义了一个简单的命名查询,则在一列上执行计数函数:
<query name="Activity.GetAllMiles">
<![CDATA[
select sum(Distance) from Activity
]]>
</query>
如何使用 NHibernate 使用 IQuery 或 ICriteria 获取总和或不返回映射实体之一的任何查询的结果?
这是我的尝试(我现在无法测试它),这行得通吗?
public decimal Find(String namedQuery)
{
using (ISession session = NHibernateHelper.OpenSession())
{
IQuery query = session.GetNamedQuery(namedQuery);
return query.UniqueResult<decimal>();
}
}
If i have a simple named query defined, the preforms a count function, on one column:
<query name="Activity.GetAllMiles">
<![CDATA[
select sum(Distance) from Activity
]]>
</query>
How do I get the result of a sum or any query that dont return of one the mapped entities, with NHibernate using Either IQuery or ICriteria?
Here is my attempt (im unable to test it right now), would this work?
public decimal Find(String namedQuery)
{
using (ISession session = NHibernateHelper.OpenSession())
{
IQuery query = session.GetNamedQuery(namedQuery);
return query.UniqueResult<decimal>();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
作为对您问题的间接回答,以下是我在没有命名查询的情况下如何做到这一点的方法。
As an indirect answer to your question, here is how I do it without a named query.
我认为在你原来的例子中,你只需要 query.UniqueResult(); 计数将返回一个整数。
I think in your original example, you just need to to query.UniqueResult(); the count will return an integer.
对不起! 我实际上想要的是一个总和,而不是一个计数,这可以解释很多。 Iv 相应地编辑了帖子
这工作正常:
命名查询方法仍然失败,“命名查询中的错误:{Activity.GetAllMiles}”:
Sorry! I actually wanted a sum, not a count, which explains alot. Iv edited the post accordingly
This works fine:
The named query approach still dies, "Errors in named queries: {Activity.GetAllMiles}":