2013-07-13 16 views
8

OrientDB'nin JDBC sürücüsünü ActiveRecord ile kullanmanın uygun yolu nedir?OrientDB'nin JDBC sürücüsünü ActiveRecord ile kullanma

Bir Rails 3.2 uygulamasını OrientDB 1.4'e bağlamaya çalışıyorum. Ben mücevher activerecord-jdbc-adapter yüklü ve aşağıdaki gibi database.yml yapılandırılmış şu şekildedir:

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

Ben OrientDB en JDBC sürücüsünü yüklemek:

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

uygulama başlar (rails s kullanarak) zaman şu istisnası atılır :

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

Yapılandırmamda eksik bir şey var mı? OrientDB'nin JDBC sürücüsünü ActiveRecord ile kullanmanın uygun yolu nedir?

+0

Bu uygulamada başarılı oldunuz mu? Çözüm yaklaşımı önerebilir misiniz. Teşekkürler... – Xdrone

cevap

1

activerecord-jdbc-adapter (teorik olarak), herhangi bir JDBC uyumlu sürücüyü desteklerken, API'leri kullanır ve birkaç tanesi için çok iyi olmayan birkaç varsayım yapar. Esp. orientdb-jdbc (en az sürüm 1.4) gibi tam uyumlu olmayan sürücülerle. http://git.io/s7g47A ama metadata.getTypeInfo() gerçek ResulSet nesnenin yerine beklenmedik null döndürür beri tüm kötü başarısız: Bu durumda

AR-JDBC DB meta verilerden desteklenen türlerini çözmeyi dener. Bu, Ruby'de native_database_types yöntemini ve/veya AR-JDBC tarafında bazı ek kodları geçersiz kılarak "boş" türlerini ele alarak geliştirilebilir - bununla birlikte OrientDB'nin "sürücüsü" için hala AR-JDBC ile tam olarak işlevsel hale gelmesi yeterli olmayabilir. .. bir AR-JDBC uzantısı için oldukça iyi bir uyum gibi geliyor (OrientDB'nin ActiveRecors/AREL'in üreteceği SQL'i ele alabileceğini varsayarak).