स्प्रिंग बूट 2.0 प्रोजेक्ट में, मेरे पास क्वेरी विधियों के साथ एक JpaRepository ऑब्जेक्ट है। एक क्वेरी विधि एक पृष्ठांकित परिणामसेट लौटाती है।

Page<Model> findByPartContainingIgnoreCaseAndModelContainingIgnoreCaseAndNeedsUpdateContainingIgnoreCase(String part, String model, String needsUpdate, Pageable pageReguest);

निम्नलिखित SQL के साथ Oracle 12c डेटाबेस को क्वेरी करते समय यह JPA क्वेरी विधि चलती है:

select * from (SQL)  where rownum <= 100

Oracle 11g डेटाबेस को क्वेरी करते समय समान JPA क्वेरी विधि (ORA-00933) के साथ विफल हो जाती है, जिसमें निम्न SQL उत्पन्न होता है:

select SQL **fetch first 100 rows only**

एक ही कोड बेस अलग-अलग Oracle डेटाबेस के लिए अलग-अलग SQL क्यों बनाता है? हम यह कैसे तय कर सकते हैं?

प्रोजेक्ट ojdbc6 (संस्करण - 11.2.0.4) Oracle ड्राइवर का उपयोग करता है।

0
Shankar P S 7 जिंदा 2020, 01:17

1 उत्तर

सबसे बढ़िया उत्तर

समस्या बोली की वजह से थी। मैंने पहले एक पुरानी बोली का इस्तेमाल किया था - "org.hibernate.dialect.Oracle9iDialect"

Application.properties में निम्नलिखित बोली सेट करके समस्या का समाधान किया गया था।

spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
1
Shankar P S 6 जिंदा 2020, 23:40