2010-12-06 20 views

答えて

84

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

+2

残念ながら、 "ORA-01754:テーブルにはLONG​​型の列が1つしか含まれていない可能性があります。 –

+0

私は特定の予約関数INTERVALに問題があります。例えば、@Formula( "SYSDATE - INTERVAL '1' HOUR * SHOW_LIMIT_HOURS") "です。私はそれがいくつかの問題を生成する可能性がありますが、良い解決策であることがわかりません:http:// stackoverflow。com/a/26907699/1488761 –

10

supported databasesによれば、Oracle 11gは正式にはサポートされていません。しかし、私はあなたがorg.hibernate.dialect.OracleDialectを使用して問題を起こすべきではないと信じています。

+14

'org.hibernate.dialect.OracleDialect'が廃止されていることを覚え(http://docs.jboss.org/hibernate/ core/3.6/javadocs/org/hibernate/dialect/OracleDialect.html)。 Oracle 10gの方言を使用する必要があります。 – Yonatan

+7

Oracle 11が現在サポートされています – MJB

+8

@MJBはOracle 11がサポートされていると指摘しています。欠けている部分は、org.hibernate.dialect.Oracle10gDialectクラス[link](http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html)でサポートされています。 #config-optional-dialects)(hiernate 4.xにも適用されます) – bmichalik

3

hibernate.hbm2ddl.auto = validateモードを使用している(廃止された)方言org.hibernate.dialect.OracledialectとOracle 11gデータベースに問題がありました。

この方言でHibernateは(このクエリを返すgetQuerySequencesString()方法の実装ため:実行データベースから空の結果を返す

"select sequence_name from user_sequences;"

れる)配列を発見することができませんでした。

"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;"

実行された場合に代えて、全ての配列を返す:方言org.hibernate.dialect.Oracle9iDialect、またはそれ以上を使用して

は、getQuerySequencesString()による方法の異なる実装に、問題を解決します。

0

あなたはWL 10は、以下の使用を使用している場合:

org.hibernate.dialect.Oracle10gDialect

1

少なくともEclipseLinkの10gおよび11gの場合で異なります。 11g以降、ページングクエリにはfirst_rowsヒントを使用することは推奨されません。

"Is it possible to disable jpa hints per particular query"を参照してください。 このようなクエリは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

使用のみ org.hibernate.dialect.OracleDialectは、9を10gの削除等

+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](レビュー/低品質の投稿/ 18711257) – diceler

+0

これは "darioo"でも提案されましたが、@ Yonatanの回答にコメントを読んでください。 –