Спящий диалект для базы данных Oracle 11g?



есть ли диалект гибернации для базы данных Oracle 11g? Или я должен использовать org.hibernate.dialect.Oracle10gDialect что поставляется с Hibernate?

606   6  

6 ответов:

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

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

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

у нас была проблема с (не рекомендуется) диалект 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;"

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

по крайней мере, в случае 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;

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

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

org.hibernate.dialect.Oracle10gDialect

использовать только орг.зимовать.диалект.OracleDialect Извлеките 10g, 9 etc.

Comments

    Ничего не найдено.