Dialetto di ibernazione per Oracle Database 11g?


98

Esiste un dialetto Hibernate per Oracle Database 11g? O dovrei usare org.hibernate.dialect.Oracle10gDialectquello fornito con Hibernate?

Risposte:


104

Usa il dialetto Oracle 10g. Anche Hibernate 3.3.2+ è richiesto per i driver JDBC recenti (la struttura della classe interna è cambiata - i sintomi si lamenteranno di una classe astratta).

Il dialetto di Oracle 11g è uguale a Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ). Fonte: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects


2
Purtroppo non aiuta per "ORA-01754: una tabella può contenere solo una colonna di tipo LONG".
Jan Goyvaerts

Ho un problema con la funzione riservata specifica INTERVAL .. es. "@Formula (" SYSDATE - INTERVAL '1' HOUR * SHOW_LIMIT_HOURS ")". Non so che potrebbe generare qualche problema, ma sembra essere una buona soluzione: stackoverflow.com/a/26907699/1488761
Eduardo Fabricio

12

Secondo i database supportati , Oracle 11g non è ufficialmente supportato. Anche se credo che non dovresti avere problemi a usare org.hibernate.dialect.OracleDialect.


15
Tieni presente che org.hibernate.dialect.OracleDialectè deprecato ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Dovresti usare il dialetto Oracle 10g.
Yonatan

7
Oracle 11 è ora supportato
MJB

8
Come ha sottolineato @MJB, Oracle 11 è supportato. La parte mancante è: è supportato con org.hibernate.dialect.Oracle10gDialect class link (si applica anche a hiernate 4.x)
bmichalik

4

Abbiamo avuto un problema con il dialetto (deprecato) org.hibernate.dialect.Oracledialect e il database Oracle 11g utilizzando la hibernate.hbm2ddl.auto = validate modalità.

Con questo dialetto Hibernate non è stato in grado di trovare le sequenze (perché l'implementazione del getQuerySequencesString() metodo, che restituisce questa query:

"select sequence_name from user_sequences;"

per cui l'esecuzione restituisce un risultato vuoto dal database).

L'uso del dialetto org.hibernate.dialect.Oracle9iDialect , o maggiore, risolve il problema, dovuto a una diversa implementazione del getQuerySequencesString() metodo:

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

che restituisce invece tutte le sequenze se eseguite.


2

Almeno nel caso di EclipseLink 10g e 11g differiscono. A partire da 11g non è consigliabile usare il suggerimento first_rows per le query di impaginazione.

Vedere "È possibile disabilitare i suggerimenti jpa per query particolare" . Tale query non dovrebbe essere utilizzata in 11g.

SELECT * FROM (
  SELECT /*+ FIRST_ROWS */ a.*, ROWNUM rnum  FROM (
    SELECT * FROM TABLES INCLUDING JOINS, ORDERING, etc.) a
  WHERE ROWNUM <= 10 )
WHERE rnum > 0;

Ma possono esserci altre sfumature.


0

Se stai usando WL 10 usa quanto segue:

org.hibernate.dialect.Oracle10gDialect


-1

usa solo org.hibernate.dialect.OracleDialect Rimuovi 10g, 9 ecc.


Questo è stato suggerito anche da "darioo", ma leggi il commento alla sua risposta di @Yonatan.
Tom Brunberg
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.