db2 count(*) упорядочить по критерию гибернации

Я пробовал этот код:

List resultList = new ArrayList();
Criteria criteria = createCriteria(SystemLogFile.class);
criteria.add(Expression.eq("clientId", clientId));
criteria.addOrder(Order.desc("systemLogFileId"));
if (page == -1) {
  resultList.add(criteria.setProjection(Projections.rowCount()).uniqueResult());
} else {
  criteria.setFirstResult(page * pageSize);
  criteria.setMaxResults(pageSize);
  resultList = criteria.list();
  setModelsListAsLoaded(resultList);
}
return resultList;

этот код генерирует следующий запрос:

select count(*) as y0_ from krn_system_log_file this_ where this_.CLIENT_ID=? order by this_.SYSTEM_LOG_FILE_ID desc

это работает с oracle и mysql, но не с db2! Я получаю сообщение об ошибке: Причина: com.ibm.db2.jcc.am.io: Ошибка SQL DB2: SQLCODE=-119, SQLSTATE=42803, SQLERRMC=SYSTEM_LOG_FILE_ID, DRIVER=3.57.82


person senior    schedule 15.04.2013    source источник


Ответы (1)


Код SQL -119 означает:

Выражение, начинающееся с expression-start, указанное в предложении SELECT, предложении HAVING или предложении ORDER BY, не указано в предложении GROUP BY или находится в предложении SELECT, предложении HAVING или предложении ORDER BY. с функцией столбца и не указано предложение GROUP BY.

В DB2, если вы хотите упорядочить по this_.SYSTEM_LOG_FILE_ID, это должно быть в предложении GROUP BY. Я не использую Hibernate, но можете ли вы добавить GROUP BY к вашему объекту criteria?

person bhamby    schedule 15.04.2013