Dialek Hibernasi untuk Oracle Database 11g?

98

Apakah ada dialek Hibernate untuk Oracle Database 11g? Atau haruskah saya menggunakan org.hibernate.dialect.Oracle10gDialectkapal dengan Hibernate?

Landon Kuhn
sumber

Jawaban:

104

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

MJB
sumber
2
Sayangnya tidak membantu untuk "ORA-01754: tabel hanya dapat berisi satu kolom jenis PANJANG".
Jan Goyvaerts
Saya punya masalah dengan fungsi khusus yang dipesan INTERVAL .. misalnya "@Formula (" SYSDATE - INTERVAL '1' HOUR * SHOW_LIMIT_HOURS ")". Saya tidak tahu ini dapat menimbulkan beberapa masalah, tetapi tampaknya menjadi solusi yang baik: stackoverflow.com/a/26907699/1488761
Eduardo Fabricio
12

Menurut database yang didukung , Oracle 11g tidak didukung secara resmi. Meskipun, saya yakin Anda seharusnya tidak memiliki masalah dalam menggunakan org.hibernate.dialect.OracleDialect.

darioo
sumber
15
Pikiran yang org.hibernate.dialect.OracleDialectditinggalkan ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ). Anda harus menggunakan dialek Oracle 10g.
Yonatan
7
Oracle 11 sekarang didukung
MJB
8
Seperti yang ditunjukkan @MJB, Oracle 11 didukung. Bagian yang hilang adalah: ini didukung dengan tautan kelas org.hibernate.dialect.Oracle10gDialect (berlaku untuk hiernate 4.x juga)
bmichalik
4

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.

Simone Cinti
sumber
2

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.

ibre5041
sumber
0

Jika Anda menggunakan WL 10 gunakan yang berikut ini:

org.hibernate.dialect.Oracle10gDialect

Mike3355
sumber
-1

gunakan hanya org.hibernate.dialect.OracleDialect Hapus 10g, 9 dll.

Manish Khalde
sumber
Ini juga disarankan oleh "darioo", tapi baca komentar untuk jawabannya oleh @Yonatan.
Tom Brunberg