Esiste un dialetto Hibernate per Oracle Database 11g? O dovrei usare org.hibernate.dialect.Oracle10gDialect
quello fornito con Hibernate?
Esiste un dialetto Hibernate per Oracle Database 11g? O dovrei usare org.hibernate.dialect.Oracle10gDialect
quello fornito con Hibernate?
Risposte:
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
Secondo i database supportati , Oracle 11g non è ufficialmente supportato. Anche se credo che non dovresti avere problemi a usare org.hibernate.dialect.OracleDialect
.
org.hibernate.dialect.OracleDialect
è deprecato ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Dovresti usare il dialetto Oracle 10g.
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.
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.
usa solo org.hibernate.dialect.OracleDialect Rimuovi 10g, 9 ecc.