回答:
Oracle 10g方言を使用します。また、最近のJDBCドライバーにはHibernate 3.3.2+が必要です(内部クラス構造が変更されました-抽象クラスに関する症状が発生します)。
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
サポートされているデータベースによると、Oracle 11gは公式にはサポートされていません。ただし、の使用には問題はないと思いますorg.hibernate.dialect.OracleDialect
。
org.hibernate.dialect.OracleDialect
推奨されないことに注意してください(docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/…)。Oracle 10g方言を使用する必要があります。
(非推奨)方言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;
しかし、他のニュアンスがある可能性があります。
org.hibernate.dialect.OracleDialectのみを使用してください10g、9などを削除してください。