web-dev-qa-db-ja.com

Oracle Database 11gのHibernateダイアレクト?

Oracle Database 11g用のHibernateダイアレクトはありますか?または、Hibernateに付属のorg.hibernate.dialect.Oracle10gDialectを使用する必要がありますか?

94
Landon Kuhn

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

97
MJB

サポートされているデータベース によると、Oracle 11gは公式にはサポートされていません。ただし、org.hibernate.dialect.OracleDialectを使用しても問題はないはずです。

12
darioo

(非推奨の)方言org.hibernate.dialect.Oracledialectおよびhibernate.hbm2ddl.auto = validateモードを使用するOracle 11gデータベースに問題がありました。

この方言では、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;"

代わりに、実行されるとすべてのシーケンスを返します。

3
Simone Cinti

少なくとも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;

しかし、他のニュアンスがあります。

1
ibre5041

WL 10を使用している場合は、次を使用します。

org.hibernate.dialect.Oracle10gDialect

0
Drew1208

org.hibernate.dialect.OracleDialect Remove 10g、9などのみを使用します。

0
Manish Khalde