Использование драйвера JDBC OrientDB с ActiveRecord

Как правильно использовать драйвер JDBC OrientDB с ActiveRecord?

Я пытаюсь подключить приложение Rails 3.2 к OrientDB 1.4. Я установил гем 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 OrientDB следующим образом:

# 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)
    ...

Чего-то не хватает в моей конфигурации? Как правильно использовать драйвер JDBC OrientDB с ActiveRecord?


person Hebatu Allah Fahmy    schedule 13.07.2013    source источник
comment
Удалось ли вам это внедрение? Можете ли вы порекомендовать подход к решению. Спасибо...   -  person Xdrone    schedule 26.09.2013


Ответы (1)


Хотя activerecord-jdbc-adapter (теоретически) поддерживает любой драйвер, совместимый с JDBC, он использует API и делает несколько допущений, которые могут работать не так хорошо для некоторых. особ. с не полностью совместимыми драйверами, такими как orientdb-jdbc (по крайней мере версии 1.4).

В этом случае AR-JDBC пытается разрешить поддерживаемые типы из метаданных БД: http://git.io/s7g47A но поскольку metadata.getTypeInfo() возвращает неожиданный null вместо фактического объекта ResulSet, все терпит неудачу. Это может быть улучшено путем обработки «нулевых» типов путем переопределения метода native_database_types в Ruby и/или некоторого дополнительного кода на стороне AR-JDBC, хотя для «драйвера» OrientDB этого все еще может быть недостаточно для полной функциональности с AR-JDBC. .. звучит как неплохое дополнение для расширения AR-JDBC (при условии, что OrientDB может обрабатывать SQL, который будет генерировать ActiveRecors/AREL).

person kares    schedule 08.01.2014