¿Existe un dialecto de hibernación para Oracle Database 11g? ¿O debería usar el org.hibernate.dialect.Oracle10gDialect
que viene con Hibernate?
¿Existe un dialecto de hibernación para Oracle Database 11g? ¿O debería usar el org.hibernate.dialect.Oracle10gDialect
que viene con Hibernate?
Respuestas:
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
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
.
org.hibernate.dialect.OracleDialect
está en desuso ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Debe utilizar el dialecto de Oracle 10g.
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.
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.
use solo org.hibernate.dialect.OracleDialect Eliminar 10g, 9, etc.