2012-12-28 33 views
0

我使用Jruby和Rails 3與jxls,一個Java庫在Excel中生成報告。從ActiveRecord訪問java.sql.connection JRuby?

jxls API有一個ReportManagerImpl,它在其構造函數中接受一個java.sql.Connection。

ReportManager reportManager = new ReportManagerImpl(conn, beans); 

在我的非工作代碼中,ReportQuery是一個ActiveRecord對象。 JRuby的是這樣的:

conn = ReportQuery.connection 
rm = Java::NetSfJxlsReport::ReportManagerImpl.new(conn, params) 

不過的ActiveRecord :: Base.connection不返回一個java.sql.Connection,而是一個ActiveRecord的:: ConnectionAdapters :: JdbcAdapter。

如何從JRuby訪問基礎java.sql.Connection對象?

該錯誤消息我得到的是:

2012-12-28 17:28:08,000 [main] WARN org.apache.commons.jexl2.JexlEngine - ![3,149]: 'rm.exec('SELECT d.name depname, e.name empname, age, payment, bonus, birthDate FROM employee e, department d where d.id = e.depid order by age desc');' method invocation error org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `createStatement' for #<ActiveRecord::ConnectionAdapters::JdbcAdapter:0x13ba673> 

回答

0

使用。 jdbc_connection在ActiveRecord連接上訪問JRuby中的原始JDBC連接的方法:

ActiveRecord::Base.connection.jdbc_connection