มีภาษาไฮเบอร์เนตสำหรับ Oracle Database 11g หรือไม่ หรือฉันควรใช้org.hibernate.dialect.Oracle10gDialect
เรือที่มี Hibernate?
มีภาษาไฮเบอร์เนตสำหรับ Oracle Database 11g หรือไม่ หรือฉันควรใช้org.hibernate.dialect.Oracle10gDialect
เรือที่มี Hibernate?
คำตอบ:
ใช้ภาษา 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
ตามฐานข้อมูลที่รองรับ Oracle 11g ไม่ได้รับการสนับสนุนอย่างเป็นทางการ แม้ว่าผมเชื่อว่าคุณไม่ควรมีปัญหาใด ๆ org.hibernate.dialect.OracleDialect
ที่ใช้
org.hibernate.dialect.OracleDialect
เลิกใช้งาน ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… ) คุณควรใช้ภาษา Oracle 10g
เรามีปัญหากับภาษาถิ่น (เลิกใช้แล้ว) 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;"
ที่ส่งคืนลำดับทั้งหมดหากดำเนินการแทน
อย่างน้อยในกรณีของ 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;
แต่อาจมีความแตกต่างอื่น ๆ
หากคุณกำลังใช้ WL 10 ให้ใช้สิ่งต่อไปนี้:
org.hibernate.dialect.Oracle10gDialect
ใช้เฉพาะ org.hibernate.dialect.OracleDialect Remove 10g, 9 เป็นต้น