ภาษาไฮเบอร์เนตสำหรับ Oracle Database 11g?


คำตอบ:


105

ใช้ภาษา Oracle 10g นอกจากนี้ยังจำเป็นต้องใช้ไฮเบอร์เนต 3.3.2+ สำหรับไดรเวอร์ JDBC ล่าสุด (โครงสร้างคลาสภายในเปลี่ยนไป - อาการจะหอนเกี่ยวกับคลาสนามธรรม)

สำเนียงของ Oracle 11g เหมือนกับ Oracle 10g ( org.hibernate.dialect.Oracle10gDialect ) ที่มา: http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/session-configuration.html#configuration-optional-dialects


2
ขออภัยไม่ได้ช่วยสำหรับ "ORA-01754: ตารางอาจมีคอลัมน์ประเภท LONG" เพียงคอลัมน์เดียว
Jan Goyvaerts

ฉันมีปัญหากับฟังก์ชันสงวนเฉพาะ INTERVAL .. เช่น "@Formula (" SYSDATE - INTERVAL '1' HOUR * SHOW_LIMIT_HOURS ")" ฉันไม่รู้ว่ามันอาจทำให้เกิดปัญหาบางอย่าง แต่ดูเหมือนว่าจะเป็นทางออกที่ดี: stackoverflow.com/a/26907699/1488761
Eduardo Fabricio

12

ตามฐานข้อมูลที่รองรับ Oracle 11g ไม่ได้รับการสนับสนุนอย่างเป็นทางการ แม้ว่าผมเชื่อว่าคุณไม่ควรมีปัญหาใด ๆ org.hibernate.dialect.OracleDialectที่ใช้


15
ใจที่org.hibernate.dialect.OracleDialectเลิกใช้งาน ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ) คุณควรใช้ภาษา Oracle 10g
Yonatan

7
รองรับ Oracle 11 แล้ว
MJB

8
ตามที่ @MJB ระบุว่ารองรับ Oracle 11 ส่วนที่ขาดหายไปคือ: รองรับกับลิงก์คลาส org.hibernate.dialect.Oracle10gDialect (ใช้กับ hiernate 4.x ด้วย)
bmichalik

4

เรามีปัญหากับภาษาถิ่น (เลิกใช้แล้ว) org.hibernate.dialect.Oracledialect และฐานข้อมูล Oracle 11g โดยใช้ hibernate.hbm2ddl.auto = validate โหมด

ด้วยภาษาถิ่นนี้ Hibernate ไม่พบลำดับ (เนื่องจากการใช้ getQuerySequencesString() วิธีการที่ส่งคืนแบบสอบถามนี้:

"select sequence_name from user_sequences;"

ซึ่งการดำเนินการจะส่งคืนผลลัพธ์ว่างเปล่าจากฐานข้อมูล)

การใช้ภาษาถิ่น org.hibernate.dialect.Oracle9iDialect หรือมากกว่าช่วยแก้ปัญหาเนื่องจากการใช้getQuerySequencesString() วิธีการที่แตกต่างกัน :

"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;"

ที่ส่งคืนลำดับทั้งหมดหากดำเนินการแทน


2

อย่างน้อยในกรณีของ EclipseLink 10g และ 11g ต่างกัน เนื่องจาก 11g จึงไม่แนะนำให้ใช้ first_rows hint สำหรับการค้นหาการแบ่งหน้า

โปรดดู"เป็นไปได้ไหมที่จะปิดใช้คำแนะนำ jpa ต่อการค้นหาหนึ่ง ๆ ไม่ควรใช้แบบสอบถามดังกล่าวใน 11g

SELECT * FROM (
  SELECT /*+ FIRST_ROWS */ a.*, ROWNUM rnum  FROM (
    SELECT * FROM TABLES INCLUDING JOINS, ORDERING, etc.) a
  WHERE ROWNUM <= 10 )
WHERE rnum > 0;

แต่อาจมีความแตกต่างอื่น ๆ



-1

ใช้เฉพาะ org.hibernate.dialect.OracleDialect Remove 10g, 9 เป็นต้น


สิ่งนี้แนะนำโดย "darioo" แต่อ่านความคิดเห็นสำหรับคำตอบของเขาโดย @Yonatan
Tom Brunberg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.