Oracle डाटाबेस 11g के लिए हाइबरनेट बोली?


98

क्या Oracle डेटाबेस 11g के लिए एक हाइबरनेट बोली है? या मुझे org.hibernate.dialect.Oracle10gDialectहाइबरनेट वाले जहाजों का उपयोग करना चाहिए ?

जवाबों:


104

Oracle 10g बोली का उपयोग करें। हाल ही में JDBC ड्राइवरों के लिए हाइबरनेट 3.3.2+ आवश्यक है (आंतरिक वर्ग संरचना बदल गई - लक्षण एक अमूर्त वर्ग के बारे में रोना होगा)।

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: के लिए मदद नहीं करता है: एक तालिका में केवल प्रकार का एक कॉलम हो सकता है"।
जन गोयवर्ट्स

मुझे विशिष्ट आरक्षित फ़ंक्शन INTERVAL के साथ समस्या है .. जैसे "@Formula (" SYSDATE - INTERVAL '1' HOUR * SHOW_LIMIT_HOURS ")"। मुझे नहीं पता कि यह कुछ समस्या उत्पन्न कर सकता है, लेकिन एक अच्छा समाधान प्रतीत होता है: stackoverflow.com/a/26907699/1488761
Eduardo Fabricio

12

समर्थित डेटाबेस के अनुसार , ओरेकल 11 जी आधिकारिक तौर पर समर्थित नहीं है। हालाँकि, मेरा मानना ​​है कि आपको उपयोग करने में कोई समस्या नहीं होनी चाहिए org.hibernate.dialect.OracleDialect


15
मन जो घटायाorg.hibernate.dialect.OracleDialect गया है ( docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/… )। आपको Oracle 10g बोली का उपयोग करना चाहिए।
योनातन

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

इस बोली के साथ हाइबरनेट अनुक्रमों को खोजने में असमर्थ था (क्योंकि 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 संकेत का उपयोग करने के लिए अनुशंसित नहीं है।

देखें "क्या प्रति विशेष क्वेरी के लिए jpa संकेत अक्षम करना संभव है" । इस तरह की क्वेरी का उपयोग 11 जी में नहीं किया जाना चाहिए।

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

लेकिन अन्य बारीकियां हो सकती हैं।


0

यदि आप WL 10 का उपयोग कर रहे हैं, तो निम्न का उपयोग करें:

org.hibernate.dialect.Oracle10gDialect


-1

केवल org.hibernate.dialect.OracleDialect का उपयोग करें 10g, 9 आदि निकालें।


यह "डारियो" द्वारा भी सुझाया गया था, लेकिन @Yonatan द्वारा उनके उत्तर के लिए टिप्पणी पढ़ें।
टॉम ब्रूनबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.