2013-07-13 38 views
8

Cách thích hợp để sử dụng trình điều khiển JDBC của OrientDB với ActiveRecord là gì?Sử dụng trình điều khiển JDBC của OrientDB với ActiveRecord

Tôi đang cố gắng kết nối ứng dụng Rails 3.2 với OrientDB 1.4. Tôi đã cài đặt đá quý activerecord-jdbc-adapter, và cấu hình database.yml như sau:

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

tôi tải trình điều khiển JDBC của OrientDB như sau:

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

Trường hợp ngoại lệ sau đây đã được ném ra khi ứng dụng bắt đầu (sử dụng 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) 
    ... 

Có điều gì đó thiếu trong cấu hình của tôi không? Cách thích hợp để sử dụng trình điều khiển JDBC của OrientDB với ActiveRecord là gì?

+0

Bạn có thành công với việc triển khai này không? Bạn có thể đề xuất phương pháp tiếp cận giải pháp hay không. Cảm ơn... – Xdrone

Trả lời

1

Trong khi activerecord-jdbc-adapter (về mặt lý thuyết) hỗ trợ bất kỳ trình điều khiển biên dịch JDBC nào, nó sử dụng API và đưa ra một vài giả định có thể hoạt động không tốt cho một vài. Esp. với các trình điều khiển không tuân thủ đầy đủ như orientdb-jdbc (ít nhất là phiên bản 1.4) là.

Trong trường hợp này AR-JDBC cố gắng giải quyết các loại hỗ trợ từ DB meta-data: http://git.io/s7g47A nhưng vì metadata.getTypeInfo() trả về một bất ngờ null thay vì một đối tượng thực tế ResulSet tất cả thất bại nặng nề. Điều này có thể được cải thiện bằng cách xử lý các loại "null" bằng cách ghi đè phương thức native_database_types trong Ruby và/hoặc một số mã bổ sung về phía AR-JDBC - mặc dù đối với "trình điều khiển" của OrientDB, nó vẫn có thể không đủ để làm cho nó đầy đủ chức năng với AR-JDBC. .. có vẻ như phù hợp với một phần mở rộng AR-JDBC (giả sử OrientDB có thể xử lý SQL mà ActiveRecors/AREL sẽ tạo ra).

Các vấn đề liên quan