Ошибка гибернации DB2 ROW_NUMBER ()

#java #hibernate #db2

#java #гибернация #db2

Вопрос:

У меня возникли проблемы в гибернации, когда я использую ROW_NUMBER() DB2, в нем говорится QueryException: неопределенный псевдоним: ROW_NUMBER. Что делать? Спасибо

 String strQuery= " SELECT c_.name, c_.id, c_.description, ROW_NUMBER() OVER(ORDER BY     
                   c_.name) AS rownum FROM Category as c_ ";
Query query = getHibernateTemplate().getSessionFactory().
getCurrentSession().createQuery(strQuery);
  

Комментарии:

1. Как вы используете вызов его из гибернации. Пожалуйста, вставьте свой код

2. чтобы избежать такого рода расхождений между базами данных, hibernate имеет dialects.javabeat.net/qna/163-list-of-hibernate-sql-dialects Для конкретного использования я хотел бы точно знать, что вы пытаетесь сделать. например, если вы собираетесь использовать rownumber для разбивки на страницы, для этого существуют специальные методы

Ответ №1:

ROW_NUMBER() недопустимая функция в DB2, но она есть в SQL Server. Вам нужна rownumber() функция. Измените свой запрос на следующий, и он должен работать:

 String strQuery= " SELECT c_.name, c_.id, c_.description, rownumber() OVER(ORDER BY     
               c_.name) AS rownum FROM Category as c_ ";
  

Комментарии:

1. Неправильно, ROW_NUMBER() — это функция в DB2 ibm.com/developerworks/data/library/techarticle /…