2015-07-21 74 views
0

我一直在与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查询与其他一些非集合则必须使用
+0

你可以发布更多的源代码? ORDER BY本身不是一个聚合函数(SUM,COUNT等)。 – Glorfindel

+0

见https://forum.hibernate.org/viewtopic.php?p=2436442 –

+0

否决,因为你问(约标准API)不符合您的代码(HQL)也声称两个不同的错误消息发生。 –

回答

0

看起来像你混合骨料和非聚集表达式..

尝试是这样的

createQuery("SELECT SUM(tcs.dueAmount) As DueAmount ... 

如果您正在使用的标准就应该是这样的

Criteria crit = sess.createCriteria(Insurance.class); 
    ProjectionList proList = Projections.projectionList(); 
    proList.add(Projections.sum("investementAmount")); 
    crit.setProjection(proList); 
    List sumResult = crit.list(); 
+0

我已经编辑了问题,请看看最后一行 –

+0

在哪里查询?请分享 –

+0

再次编辑。请 –