Gibt es einen Hibernate-Dialekt für Oracle Database 11g? Oder sollte ich das org.hibernate.dialect.Oracle10gDialect
mit Hibernate gelieferte verwenden?
98
Verwenden Sie den Oracle 10g-Dialekt. Für neuere JDBC-Treiber ist auch Hibernate 3.3.2+ erforderlich (die interne Klassenstruktur wurde geändert - die Symptome jammern über eine abstrakte Klasse).
Der Dialekt von Oracle 11g entspricht dem von Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ). Quelle: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects
Laut unterstützten Datenbanken wird Oracle 11g nicht offiziell unterstützt. Obwohl ich glaube, dass Sie keine Probleme mit der Verwendung haben sollten
org.hibernate.dialect.OracleDialect
.quelle
org.hibernate.dialect.OracleDialect
veraltet ist ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Sie sollten den Oracle 10g-Dialekt verwenden.Wir hatten ein Problem mit dem (veralteten) Dialekt
org.hibernate.dialect.Oracledialect
und der Oracle 11g-Datenbank imhibernate.hbm2ddl.auto = validate
Modus.Mit diesem Dialekt konnte Hibernate die Sequenzen nicht finden (aufgrund der Implementierung der
getQuerySequencesString()
Methode, die diese Abfrage zurückgibt:"select sequence_name from user_sequences;"
für die die Ausführung ein leeres Ergebnis aus der Datenbank zurückgibt).
Die Verwendung des Dialekts
org.hibernate.dialect.Oracle9iDialect
oder höher löst das Problem aufgrund einer anderen Implementierung dergetQuerySequencesString()
Methode:"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;"
Das gibt stattdessen alle Sequenzen zurück, wenn sie ausgeführt werden.
quelle
Zumindest bei EclipseLink unterscheiden sich 10g und 11g. Seit 11g wird nicht empfohlen, den Hinweis first_rows für Paginierungsabfragen zu verwenden.
Siehe "Ist es möglich, JPA-Hinweise für eine bestimmte Abfrage zu deaktivieren" . Eine solche Abfrage sollte in 11g nicht verwendet werden.
Es kann aber auch andere Nuancen geben.
quelle
Wenn Sie WL 10 verwenden, verwenden Sie Folgendes:
org.hibernate.dialect.Oracle10gDialect
quelle
Verwenden Sie nur org.hibernate.dialect.OracleDialect. Entfernen Sie 10g, 9 usw.
quelle