3

我无法让 sum() 返回小数,它总是返回 int64 截断小数。我已经用谷歌搜索了一整天,但仍然找不到真正的工作。我有一个名为 ProductPurchase 的数据库表

QtyPurchased(int) 和 UnitPurchasePrice(money) 列,

这些使用 NHibernate 映射到 C# POCO 对象,其中 QtyPurchase 是一个 int 并且 UnitPurchasePrice 是一个小数属性。

我有以下 HQL 查询,我想在其中获取给定日期的总购买金额:

select sum(detail.QtyPurchased * detail.UnitPurchasePrice) from Domain.Entities.ProductPurchase AS detail where datediff("day", detail.PurchaseDate, :trading_date) = 0

现在无论出于什么原因,query.UniqueResult 总是返回一个 Int64 整数,截断小数,而生成的 SQL 显然返回正确的数字,并带有小数。有人可以解释一下如何让它返回十进制吗?

我注意到如果我使用 SQL(即 CreateSqlQuery),我可以得到小数点。这是 Nhibernate 的错误吗?

非常感谢

史蒂文·郭

4

1 回答 1

2

反转因素的顺序对我来说是:(价格*数量)而不是(数量*价格)。

我想它必须只检查第一个参数类型,如果此解决方法对您有用,请填写JIRA 问题。

于 2009-04-07T07:08:52.447 回答