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?

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


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.


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.


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.


0

Jika Anda menggunakan WL 10 gunakan yang berikut ini:

org.hibernate.dialect.Oracle10gDialect


-1

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


Ini juga disarankan oleh "darioo", tapi baca komentar untuk jawabannya oleh @Yonatan.
Tom Brunberg
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.