/ / ActiveRecord के साथ OrientDB के JDBC ड्राइवर का उपयोग करना - रूबी-ऑन-रेल, एक्टिवरकार्ड, jdbc, jruby, Oridb

OrientDB के जेडीबीसी ड्राइवर का उपयोग ActiveRecord के साथ - रूबी-ऑन-रेल, activerecord, jdbc, jruby, orientdb

ActiveRecord के साथ OrientDB के JDBC ड्राइवर का उपयोग करने का उचित तरीका क्या है?

मैं ओरिएंटबीडी 1.4 पर रेल 3.2 एप्लिकेशन को जोड़ने का प्रयास कर रहा हूं। मैंने मणि लगा दी activerecord-jdbc-adapter, और कॉन्फ़िगर किया गया database.yml निम्नलिखित नुसार:

development:
adapter: jdbc
username: admin
password: admin
driver:   com.orientechnologies.orient.jdbc.OrientJdbcDriver
url:      jdbc:orient:local:db/test_db2

मैं ओरिएंटबीडी के JDBC ड्राइवर को निम्नानुसार लोड करता हूं:

# in config/application.rb:
require "/home/myuser/jars/orientdb-jdbc-1.4.0-all.jar"

आवेदन शुरू होने पर (प्रयोग करके) निम्न अपवाद को फेंका जा रहा है rails s):

java.lang.NullPointerException
at arjdbc.jdbc.RubyJdbcConnection.unmarshalResult(RubyJdbcConnection.java:1187)
at arjdbc.jdbc.RubyJdbcConnection.set_native_database_types(RubyJdbcConnection.java:537)
at arjdbc.jdbc.RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.call(RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.gen)
...

क्या मेरे कॉन्फ़िगरेशन में कुछ कमी है? ActiveRecord के साथ OrientDB के JDBC ड्राइवर का उपयोग करने का उचित तरीका क्या है?

उत्तर:

उत्तर № 1 के लिए 1

जबकि activerecord-jdbc-adapter (सैद्धांतिक रूप से) किसी भी JDBC कंपाइलेंट ड्राइवर का समर्थन करता है, यह APIs का उपयोग करता है और कुछ धारणाएँ बनाता है जो कुछ के लिए इतनी अच्छी तरह से काम नहीं कर सकती हैं। Esp। पूरी तरह से आज्ञाकारी ड्राइवरों जैसे नहीं orientdb-JDBC (कम से कम संस्करण 1.4) है।

इस स्थिति में AR-JDBC समर्थित प्रकारों को DB मेटा-डेटा से हल करने का प्रयास करता है: http://git.io/s7g47A लेकिन जबसे metadata.getTypeInfo() एक अप्रत्याशित रिटर्न देता है null एक वास्तविक के बजाय ResulSet ऑब्जेक्ट सभी बुरी तरह से विफल रहता है। ओवरराइड करके "अशक्त" प्रकारों को संभालकर इसे बेहतर बनाया जा सकता है native_database_types रूबी और / या कुछ अतिरिक्त कोड में विधिAR-JDBC का पक्ष - हालाँकि OrientDB "s" ड्राइवर के लिए है, फिर भी यह AR-JDBC के साथ पूरी तरह कार्यात्मक होने के लिए पर्याप्त नहीं हो सकता है ... AR-JDBC एक्सटेंशन के लिए एक बहुत अच्छा फिट जैसा लगता है (OrientDBDB मान सकते हैं) SQL जो ActiveRecors / AREL उत्पन्न करेगा)।