2012-04-18 17 views
1

私は、プロジェクトでHibernate 3.2.5を使用していて、Jasper 3.7.2を使用してアプリケーション用のSome Reportsを生成しています。Hibernate get JasperRunManagerのConnectionオブジェクト

HibernateSessionFactoryオブジェクトからConnectionオブジェクトを取得する方法はありますか?この時点では、JasperRunManagerの静的メソッドを介してJasperを処理するODBC接続用のプロパティファイルと、他の側のHibernateも持つ必要があるため、1つの接続のみを処理したいと考えています。事前に

byte[] net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(InputStream inputStream, Map parameters, Connection conn) throws JRException 

ありがとう:

これは私が接続を渡す必要がある方法です。 :)

答えて

3

私は、Hibernate 4 と同じ問題を抱えていたし、ここでのソリューション

Session ses = ... 
final InputStream finalCompiledReportStream = compiledReportStream; 
final OutputStream finalByteArrayOutputStream = byteArrayOutputStream; 
ses.doWork(new Work() { 
    public void execute(Connection connection) throws SQLException { 
     try { 
      JasperFillManager.fillReportToStream(finalCompiledReportStream, finalByteArrayOutputStream, parameters, connection); 
     } catch (JRException e) { 
      ReportAction.this.logger.error(e); 
     } 
    } 
}); 
0

これは上空で動作し、あなたがコードでそれを必要とするかもしれない場所を別の場所に接続オブジェクトを使用することができます。 doWorkはこれを何度もやり続ける必要があるかもしれませんが、接続オブジェクトniceを作成することはよりクリーンな解決策です。

sessionは、HibernateのSessionオブジェクト

の名前です
SessionImpl sessionImpl = (SessionImpl) session; 
Connection conn = sessionImpl.connection(); 

関連する問題