0

Jruby と Rails 3 をjxlsと共に使用しています。これは、Excel でレポートを生成するための Java ライブラリです。

jxls API には、コンストラクターで java.sql.Connection を取る ReportManagerImpl があります。

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> 
4

1 に答える 1

0

使用する 。JRuby で raw JDBC 接続にアクセスする ActiveRecord 接続のjdbc_connectionメソッド:

ActiveRecord::Base.connection.jdbc_connection
于 2013-01-16T01:30:54.467 に答える