2013-07-13 6 views
8

OrientDBのJDBCドライバをActiveRecordで使用する適切な方法は何ですか?OrientDBのJDBCドライバと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 

次のように私はOrientDBの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ドライバを使用する正しい方法は何ですか?

+0

この実装で成功しましたか?ソリューションアプローチをお勧めできますか?ありがとう... – Xdrone

答えて

1

activerecord-jdbc-adapter(理論上は)任意のJDBCコンパイルドライバをサポートしていますが、APIを使用しており、いくつかの仮定がありますが、それほどうまくいきません。 Esp。 orientdb-jdbc(少なくともバージョン1.4以上)などの準拠していないドライバの場合は、 AR-JDBCは、DBのメタデータからサポートされているタイプを解決しようとする。この場合

http://git.io/s7g47Aしかしmetadata.getTypeInfo()ではなく、実際のResulSetオブジェクトの予期せぬnullを返すので、すべてがひどく失敗します。これは、Rubyでnative_database_typesメソッドをオーバーライドしたり、AR-JDBCのサイドでいくつかの追加コードを処理して、 "null"型を処理することで改善されるかもしれませんが、OrientDBの「ドライバ」ではAR-JDBCで完全に機能するには不十分です。 .. AR-JDBC拡張(ActiveRecors/ARELが生成するSQLをOrientDBが処理できると仮定した場合)に非常によく似ています。

関連する問題