Hibernate dialect for Oracle Database 11g?

后端 未结 6 1109
梦谈多话
梦谈多话 2020-12-07 15:24

Is there a Hibernate dialect for Oracle Database 11g? Or should I use the org.hibernate.dialect.Oracle10gDialect that ships with Hibernate?

相关标签:
6条回答
  • 2020-12-07 15:50

    We had a problem with the (deprecated) dialect org.hibernate.dialect.Oracledialect and Oracle 11g database using hibernate.hbm2ddl.auto = validate mode.

    With this dialect Hibernate was unable to found the sequences (because the implementation of the getQuerySequencesString() method, that returns this query:

    "select sequence_name from user_sequences;"

    for which the execution returns an empty result from database).

    Using the dialect org.hibernate.dialect.Oracle9iDialect , or greater, solves the problem, due to a different implementation of getQuerySequencesString() method:

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

    that returns all the sequences if executed, instead.

    0 讨论(0)
  • 2020-12-07 15:57

    If you are using WL 10 use the following:

    org.hibernate.dialect.Oracle10gDialect

    0 讨论(0)
  • 2020-12-07 16:03

    use only org.hibernate.dialect.OracleDialect Remove 10g,9 etc.

    0 讨论(0)
  • 2020-12-07 16:06

    Use the Oracle 10g dialect. Also Hibernate 3.3.2+ is required for recent JDBC drivers (the internal class structure changed - symptoms will be whining about an abstract class).

    Dialect of Oracle 11g is same as Oracle 10g (org.hibernate.dialect.Oracle10gDialect). Source: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects

    0 讨论(0)
  • 2020-12-07 16:06

    According to supported databases, Oracle 11g is not officially supported. Although, I believe you shouldn't have any problems using org.hibernate.dialect.OracleDialect.

    0 讨论(0)
  • 2020-12-07 16:08

    At least in case of EclipseLink 10g and 11g differ. Since 11g it is not recommended to use first_rows hint for pagination queries.

    See "Is it possible to disable jpa hints per particular query". Such a query should not be used 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;
    

    But there can be other nuances.

    0 讨论(0)
提交回复
热议问题