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;но могут быть и другие нюансы.
Comments