2017-05-18 38 views
1

雖然在我的項目執行此代碼組:jdbc.SQLServerException對條款

Integer countObj = (Integer) ht.findByCriteria(criteria.setProjection(Projections.rowCount())).get(0);  

我得到以下異常:

com.microsoft.sqlserver.jdbc.SQLServerException:列「PRODUCT_TASK .PRODUCT_TASK_ID「在ORDER BY子句中無效,因爲它不包含在聚合函數或GROUP BY子句中。」

這裏我使用兩個表秒。

  • Product_taskproduct_task_id作爲主鍵
  • Product_infoproduct_info_id作爲主鍵

product_info_idProduct_task外鍵。

通過執行該查詢我會得到計數。

我在我的日誌得到這個SQL查詢:

select count(*) as Count from PRODUCT_TASK pt inner join 
PRODUCT_INFO pin on pt.PRODUCT_INFO_ID=pin.PRODUCT_INFO_ID 
where pin.UPC like ? order by pt.PRODUCT_TASK_ID asc** 

我知道如何(by子句需要組在那裏)更改SQL查詢,但我不知道如何修改的Hibernate查詢中爲了得到結果。

+0

格式化代碼轉換成代碼塊。在blockquote中添加異常。子彈指出了桌子。使標題更具信息性 –

回答

0

您只需要在您的Criteria中使用Projections's .groupProperty() method

groupProperty

public static PropertyProjection groupProperty(String propertyName)

一個分組屬性值

您的代碼會是這樣的:

Integer countObj = (Integer) ht.findByCriteria(criteria.setProjection(Projections.rowCount() 
.add(Projections.groupProperty("product_task_id")))) 
.get(0);