Проблемы с запросами в Hibernate (JPA) и PostgreSQL - PullRequest
1 голос
/ 12 мая 2010

Я пытаюсь использовать PostgreSQL в качестве базы данных для Hibernate / JPA. Тем не менее, я получаю ошибку при выполнении простого запроса. Мой запрос выглядит следующим образом:

SELECT DISTINCT p FROM UserProfile p ORDER BY :order

Когда я выполню запрос, я передам значение типа «lastLoginDate» для: order. Тем не менее, я получаю следующее исключение при попытке выполнить запрос:

ERROR org.hibernate.util.JDBCExceptionReporter  - ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
  Position: 781

Этот запрос прекрасно работает, используя MySQL в качестве базы данных, но мы бы хотели перейти к PostgreSQL. Моя общая конфигурация и соединение с базой данных правильные, так как я вижу, что таблицы создаются правильно. Я что-то упускаю? Есть ли свойство конфигурации, которое мне нужно установить? Любая помощь, которую вы можете оказать, будет ОЧЕНЬ признательна. Спасибо!

1 Ответ

7 голосов
/ 12 мая 2010

Postgresql запрещает этот запрос, потому что он неоднозначный :

there's actually a definitional reason for it.  Consider

        SELECT DISTINCT x FROM tab ORDER BY y;

For any particular x-value in the table there might be many different y
values.  Which one will you use to sort that x-value in the output?

Не очень понятно, что вы хотите (пример?), Но если вы собираетесь отсортировать все записи по столбцу «: порядок», а затем удалить дублированные значения, вы можете сделать это сначала с помощью DISTINCT ON:, а затем изменить порядок. :

 SELECT p FROM  
    ( SELECT DISTINCT ON (p) * from UserProfile ORDER BY p , :order) 
    AS UserProfileUniq 
  ORDER BY :order ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...