Dialecto de hibernación para Oracle Database 11g?

98

¿Existe un dialecto de hibernación para Oracle Database 11g? ¿O debería usar el org.hibernate.dialect.Oracle10gDialectque viene con Hibernate?

Landon Kuhn
fuente

Respuestas:

104

Utilice el dialecto de Oracle 10g. También se requiere Hibernate 3.3.2+ para los controladores JDBC recientes (la estructura de clases interna cambió; los síntomas se quejarán de una clase abstracta).

El dialecto de Oracle 11g es el mismo que el de Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ). Fuente: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects

MJB
fuente
2
Desafortunadamente, no ayuda para "ORA-01754: una tabla puede contener solo una columna de tipo LONG".
Jan Goyvaerts
Tengo un problema con la función reservada específica INTERVAL ... eg "@Formula (" SYSDATE - INTERVAL '1' HOUR * SHOW_LIMIT_HOURS ")". No sé si podría generar algún problema, pero parece ser una buena solución: stackoverflow.com/a/26907699/1488761
Eduardo Fabricio
12

Según las bases de datos compatibles , Oracle 11g no es oficialmente compatible. Aunque, creo que no debería tener ningún problema al usar org.hibernate.dialect.OracleDialect.

darioo
fuente
15
Tenga en cuenta que org.hibernate.dialect.OracleDialectestá en desuso ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Debe utilizar el dialecto de Oracle 10g.
Yonatan
7
Oracle 11 ahora es compatible
MJB
8
Como señaló @MJB, Oracle 11 es compatible. La parte que falta es: es compatible con org.hibernate.dialect.Oracle10gDialect class link (también se aplica a hiernate 4.x)
bmichalik
4

Tuvimos un problema con el dialecto (obsoleto) org.hibernate.dialect.Oracledialect y la base de datos Oracle 11g usando el hibernate.hbm2ddl.auto = validate modo.

Con este dialecto, Hibernate no pudo encontrar las secuencias (debido a la implementación del getQuerySequencesString() método, que devuelve esta consulta:

"select sequence_name from user_sequences;"

para lo cual la ejecución devuelve un resultado vacío de la base de datos).

El uso del dialecto org.hibernate.dialect.Oracle9iDialect , o mayor, resuelve el problema, debido a una implementación diferente del getQuerySequencesString() método:

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

que devuelve todas las secuencias si se ejecutan, en su lugar.

Simone Cinti
fuente
2

Al menos en el caso de EclipseLink 10g y 11g difieren. Desde 11g, no se recomienda utilizar la sugerencia first_rows para consultas de paginación.

Consulte "¿Es posible deshabilitar las sugerencias jpa por consulta en particular" . Esta consulta no debe utilizarse en 11g.

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

Pero puede haber otros matices.

ibre5041
fuente
0

Si está utilizando WL 10, utilice lo siguiente:

org.hibernate.dialect.Oracle10gDialect

Mike3355
fuente
-1

use solo org.hibernate.dialect.OracleDialect Eliminar 10g, 9, etc.

Manish Khalde
fuente
Esto también fue sugerido por "darioo", pero lea el comentario a su respuesta por @Yonatan.
Tom Brunberg