Czy istnieje dialekt hibernacji dla Oracle Database 11g? Czy powinienem używać tego, org.hibernate.dialect.Oracle10gDialect
który jest dostarczany z Hibernate?
98
Użyj dialektu Oracle 10g. Również Hibernate 3.3.2+ jest wymagany dla najnowszych sterowników JDBC (zmieniła się wewnętrzna struktura klas - objawy będą narzekać o klasie abstrakcyjnej).
Dialekt Oracle 11g jest taki sam jak Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ). Źródło: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects
Według obsługiwanych baz danych Oracle 11g nie jest oficjalnie obsługiwany. Chociaż uważam, że nie powinieneś mieć żadnych problemów z używaniem
org.hibernate.dialect.OracleDialect
.źródło
org.hibernate.dialect.OracleDialect
jest przestarzały ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Powinieneś używać dialektu Oracle 10g.Mieliśmy problem z (przestarzałym) dialektem
org.hibernate.dialect.Oracledialect
i bazą danych Oracle 11g korzystającą zhibernate.hbm2ddl.auto = validate
trybu.W tym dialekcie Hibernate nie mógł znaleźć sekwencji (ponieważ implementacja
getQuerySequencesString()
metody, która zwraca to zapytanie:"select sequence_name from user_sequences;"
dla którego wykonanie zwraca pusty wynik z bazy danych).
Używanie dialektu
org.hibernate.dialect.Oracle9iDialect
lub wyższego rozwiązuje problem z powodu innej implementacjigetQuerySequencesString()
metody:"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;"
która zwraca wszystkie sekwencje, jeśli jest wykonywana, zamiast tego.
źródło
Przynajmniej w przypadku EclipseLink 10g i 11g różnią się. Od wersji 11g nie jest zalecane używanie wskazówki first_rows do zapytań o paginację.
Zobacz „Czy można wyłączyć podpowiedzi jpa dla konkretnego zapytania” . Takie zapytanie nie powinno być używane w 11g.
Ale mogą być inne niuanse.
źródło
Jeśli używasz WL 10, użyj:
org.hibernate.dialect.Oracle10gDialect
źródło
używaj tylko org.hibernate.dialect.OracleDialect Usuń 10g, 9 itp.
źródło