2013-07-13 13 views
8

Jaki jest właściwy sposób używania sterownika JDBC OrientDB za pomocą ActiveRecord?Używanie sterownika JDBC OrientDB z ActiveRecord

Próbuję podłączyć aplikację Rails 3.2 do OrientDB 1.4. Po zainstalowaniu gem activerecord-jdbc-adapter i skonfigurowany database.yml następująco:

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

załadować sterownika JDBC w OrientDB w następujący sposób:

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

następujący wyjątek jest generowany, gdy uruchamiania aplikacji (za pomocą 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) 
    ... 

Czy w mojej konfiguracji brakuje czegoś? Jaki jest właściwy sposób używania sterownika JDBC OrientDB za pomocą ActiveRecord?

+0

Czy odniosłeś sukces w tej implementacji? Czy możesz polecić rozwiązanie rozwiązania. Dzięki... – Xdrone

Odpowiedz

1

Podczas gdy (teoretycznie) obsługuje dowolny sterownik składniowy JDBC, wykorzystuje interfejsy API i tworzy kilka założeń, które mogą nie działać zbyt dobrze dla kilku. Esp. z niezupełnie zgodnymi sterownikami, takimi jak orientdb-jdbc (co najmniej wersja 1.4).

W tym przypadku AR-JDBC próbuje rozwiązać obsługiwane typy z meta-danych DB: http://git.io/s7g47A ale ponieważ metadata.getTypeInfo() zwraca nieoczekiwane null zamiast rzeczywistej ResulSet obiektu wszystko nie źle. Można to poprawić, radząc sobie z typami "zerowymi" przez przesłonięcie metody native_database_types w Ruby i/lub trochę dodatkowego kodu po stronie AR-JDBC - chociaż dla "sterownika" OrientDB może to nie wystarczyć, aby w pełni funkcjonować z AR-JDBC. .. brzmi jak całkiem niezłe dopasowanie do rozszerzenia AR-JDBC (zakładając, że OrientDB może obsłużyć SQL, który wygeneruje ActiveRecors/AREL).

Powiązane problemy