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?

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


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.


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.


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.


0

Si está utilizando WL 10, utilice lo siguiente:

org.hibernate.dialect.Oracle10gDialect


-1

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


Esto también fue sugerido por "darioo", pero lea el comentario a su respuesta por @Yonatan.
Tom Brunberg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.