Apakah ada dialek Hibernate untuk Oracle Database 11g? Atau haruskah saya menggunakan org.hibernate.dialect.Oracle10gDialect
kapal dengan Hibernate?
Apakah ada dialek Hibernate untuk Oracle Database 11g? Atau haruskah saya menggunakan org.hibernate.dialect.Oracle10gDialect
kapal dengan Hibernate?
Jawaban:
Gunakan dialek Oracle 10g. Juga Hibernate 3.3.2+ diperlukan untuk driver JDBC terbaru (struktur kelas internal berubah - gejala akan mengeluh tentang kelas abstrak).
Dialek Oracle 11g sama dengan Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ). Sumber: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects
Menurut database yang didukung , Oracle 11g tidak didukung secara resmi. Meskipun, saya yakin Anda seharusnya tidak memiliki masalah dalam menggunakan org.hibernate.dialect.OracleDialect
.
org.hibernate.dialect.OracleDialect
ditinggalkan ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Anda harus menggunakan dialek Oracle 10g.
Kami mengalami masalah dengan dialek (usang) org.hibernate.dialect.Oracledialect
dan database Oracle 11g menggunakan hibernate.hbm2ddl.auto = validate
mode.
Dengan dialek ini Hibernate tidak dapat menemukan urutan (karena penerapan getQuerySequencesString()
metode ini, yang mengembalikan kueri ini:
"select sequence_name from user_sequences;"
yang mana eksekusi mengembalikan hasil kosong dari database).
Menggunakan dialek org.hibernate.dialect.Oracle9iDialect
, atau lebih besar, memecahkan masalah, karena penerapan getQuerySequencesString()
metode yang berbeda :
"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;"
yang mengembalikan semua urutan jika dieksekusi.
Setidaknya dalam kasus EclipseLink 10g dan 11g berbeda. Sejak 11g, tidak disarankan untuk menggunakan petunjuk baris pertama untuk kueri penomoran halaman.
Lihat "Apakah mungkin untuk menonaktifkan petunjuk jpa per kueri tertentu" . Kueri seperti itu tidak boleh digunakan dalam 11g.
SELECT * FROM (
SELECT /*+ FIRST_ROWS */ a.*, ROWNUM rnum FROM (
SELECT * FROM TABLES INCLUDING JOINS, ORDERING, etc.) a
WHERE ROWNUM <= 10 )
WHERE rnum > 0;
Tapi mungkin ada nuansa lain.
gunakan hanya org.hibernate.dialect.OracleDialect Hapus 10g, 9 dll.