getSingleResult () изменяет запрос count () - PullRequest
2 голосов
/ 31 августа 2011

Мое приложение использует Hibernate для подключения к SQL Server. Недавно я изменил свою функцию DAO, которая получает счетчик из одной из таблиц с «return query.getResultList (). Get (0)» на «query.getSingleResult ()». Запрос sql count () предоставляется по имени namedQuery.

Когда я внес это изменение, я заметил, что SQL, сгенерированный Hibernate, теперь изменился с выберите количество (test0_.TestId) как ..... в выберите счетчик 2 лучших (test0_.TestId) как ...

Зачем Hibernate переводить в топ-2, а не в топ-1 для getSingleResult ()? Есть ли способ отключить Hibernate, изменив мой запрос count () для использования top 2?

Спасибо

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

Зачем Hibernate переводить в топ-2, а не в топ-1 для getSingleResult ()?

Hibernate выбирает 2 записи, чтобы проверить, есть ли одна или несколько. Если возвращено 2, будет сгенерировано исключение, поскольку результат не является уникальным. Если бы использовался топ 1, Hibernate не смог бы определить, будет ли больше.

1 голос
/ 31 августа 2011

getSingleResult выдает исключение, если нет точно одного результата.Это позволяет проверить, возвращено ли более одной строки.

...