Existe um dialeto do Hibernate para o Oracle Database 11g? Ou devo usar o org.hibernate.dialect.Oracle10gDialect
que vem com o Hibernate?
98
Use o dialeto Oracle 10g. Além disso, o Hibernate 3.3.2+ é necessário para drivers JDBC recentes (a estrutura da classe interna mudou - os sintomas vão reclamar de uma classe abstrata).
O dialeto do Oracle 11g é igual ao do 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
De acordo com os bancos de dados suportados , o Oracle 11g não é oficialmente compatível. Embora, eu acredite que você não deve ter problemas para usar
org.hibernate.dialect.OracleDialect
.fonte
org.hibernate.dialect.OracleDialect
está obsoleto ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Você deve usar o dialeto Oracle 10g.Tivemos um problema com o dialeto (obsoleto)
org.hibernate.dialect.Oracledialect
e o banco de dados Oracle 11g usandohibernate.hbm2ddl.auto = validate
modo.Com este dialeto o Hibernate não conseguiu encontrar as sequências (devido a implementação do
getQuerySequencesString()
método, que retorna esta consulta:"select sequence_name from user_sequences;"
para o qual a execução retorna um resultado vazio do banco de dados).
Usar o dialeto
org.hibernate.dialect.Oracle9iDialect
, ou superior, resolve o problema, devido a uma implementação diferente dogetQuerySequencesString()
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 retorna todas as sequências se executado, em vez disso.
fonte
Pelo menos no caso de EclipseLink 10g e 11g diferirem. Desde 11g não é recomendado usar a dica first_rows para consultas de paginação.
Consulte "É possível desabilitar dicas jpa por consulta específica" . Essa consulta não deve ser usada no 11g.
Mas pode haver outras nuances.
fonte
Se você estiver usando WL 10, use o seguinte:
org.hibernate.dialect.Oracle10gDialect
fonte
use apenas org.hibernate.dialect.OracleDialect Remove 10g, 9 etc.
fonte