Спящий диалект для Oracle Database 11g? - PullRequest
93 голосов
/ 06 декабря 2010

Существует ли диалект Hibernate для Oracle Database 11g?Или я должен использовать org.hibernate.dialect.Oracle10gDialect, который поставляется с Hibernate?

Ответы [ 6 ]

96 голосов
/ 04 марта 2011

Используйте диалект Oracle 10g.Также Hibernate 3.3.2+ требуется для последних драйверов JDBC (внутренняя структура класса изменилась - симптомы будут жаловаться на абстрактный класс).

Диалект Oracle 11g такой же, как Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ).Источник: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects

12 голосов
/ 06 декабря 2010

Согласно поддерживаемым базам данных , Oracle 11g официально не поддерживается. Хотя, я думаю, у вас не должно возникнуть проблем с использованием org.hibernate.dialect.OracleDialect.

3 голосов
/ 15 января 2015

У нас возникла проблема с (устаревшим) диалектом org.hibernate.dialect.Oracledialect и базой данных Oracle 11g в режиме hibernate.hbm2ddl.auto = validate.

С этим диалектом Hibernate не смог найти последовательности (потому что реализация метода getQuerySequencesString() возвращает этот запрос:

"select sequence_name from user_sequences;"

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

Использование диалекта org.hibernate.dialect.Oracle9iDialect или выше решает проблему из-за другой реализации getQuerySequencesString() метода:

"select sequence_name from all_sequences union select synonym_name from all_synonyms us, all_sequences asq where asq.sequence_name = us.table_name and asq.sequence_owner = us.table_owner;"

, который возвращает все последовательности, если они выполнены, вместо этого.

1 голос
/ 06 июня 2016

По крайней мере, в случае EclipseLink 10g и 11g отличаются. Начиная с 11g не рекомендуется использовать подсказку first_rows для запросов разбивки на страницы.

См. "Можно ли отключить подсказки jpa для конкретного запроса" . Такой запрос не следует использовать в 11g.

SELECT * FROM (
  SELECT /*+ FIRST_ROWS */ a.*, ROWNUM rnum  FROM (
    SELECT * FROM TABLES INCLUDING JOINS, ORDERING, etc.) a
  WHERE ROWNUM <= 10 )
WHERE rnum > 0;

Но могут быть и другие нюансы.

0 голосов
/ 03 февраля 2018

использовать только org.hibernate.dialect.OracleDialect Удалить 10g, 9 и т. Д.

0 голосов
/ 06 июня 2016

Если вы используете WL 10, используйте следующее:

org.hibernate.dialect.Oracle10gDialect

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...