我一直在与Oracle和Postgre最近切换到MS SQL 2012 我用我的应用程序冬眠何地我已经标准的使用顺序:休眠2 MSSQL的ORDER BY
(criteria.addOrder(Order.asc("applicationId")));
它导致错误说:
聚合函数不工作。
一旦我发表评论,我的程序工作和数据可以检索。
我使用Hibernate 3
有没有办法通过Hibernate没有这个错误命令吗?
编辑..
这是一个错误,我得到,
列“SKY.tcrent.RENTNO”是在ORDER BY子句,因为它 未包含在聚合函数无效或GROUP BY 子句。
编辑2 ..
我的查询
Query tcSchaduleQ = getSession().createQuery("SELECT SUM(tcs.dueAmount) FROM TrialCalculationSchedule tcs WHERE tcs.facilityId=:facilityId AND tcs.rentalNumber>:rentalNumber AND tcs.dueDate>:dueDate AND dueTypeId IN(:dueTypeId) ORDER BY tcs.rentalNumber ").setInteger("rentalNumber", facility.getPeriod() - noOfprePayments).setInteger("facilityId",facility.getFacilityId()).setDate("dueDate", date).setParameterList("dueTypeId", plist);
Number tcsAmt = (Number) tcSchaduleQ.uniqueResult();
,这是什么休眠生成HQL
SELECT
SUM(tcs.dueAmount)
FROM
TrialCalculationSchedule tcs
WHERE
tcs.facilityId=:facilityId
AND tcs.rentalNumber>:rentalNumber
AND tcs.dueDate>:dueDate
AND dueTypeId IN(
:dueTypeId
)
ORDER BY
tcs.rentalNumber
,这是SQL
select
SUM(trialcalcu0_.DUEAMT) as col_0_0_
from
SKYBANKSLFHP.tcrent trialcalcu0_
where
trialcalcu0_.FACID=?
and trialcalcu0_.RENTNO>?
and trialcalcu0_.DUEDATE>?
and (
trialcalcu0_.DUETYPEID in (
? , ?
)
)
order by
trialcalcu0_.RENTNO
。如果你使用的是像
AVG()
任何聚合函数
Select
查询与其他一些非集合则必须使用
你可以发布更多的源代码? ORDER BY本身不是一个聚合函数(SUM,COUNT等)。 – Glorfindel
见https://forum.hibernate.org/viewtopic.php?p=2436442 –
否决,因为你问(约标准API)不符合您的代码(HQL)也声称两个不同的错误消息发生。 –