1

プロジェクトでHibernate3.2.5を使用し、アプリケーションのレポートを生成するためにJasper3.7.2を使用しています。

HibernateSessionFactoryオブジェクトから接続オブジェクトを取得する方法はありますか?現時点では、JasperRunManager静的メソッドを介してJasperを処理し、反対側のHibernateも処理するODBC接続のプロパティファイルが必要なため、1つの接続のみを処理します。

これは私が接続を渡すために必要な方法です:

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

前もって感謝します。:)

4

2 に答える 2

3

私はhibernate4で同じ問題を抱えていましたが、ここに解決策があります

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);
       }
    }
});
于 2012-07-25T11:44:22.793 に答える
0

これは非常にうまく機能し、コード内で必要になる可能性のある他の場所で接続オブジェクトを使用できます。doWorkでは、これを何度も実行し続ける必要があるかもしれませんが、接続オブジェクトを適切に作成することは、よりクリーンなソリューションです。

SessionImpl sessionImpl = (SessionImpl) session;
Connection conn = sessionImpl.connection();

sessionHibernateSessionオブジェクトの名前はどこにありますか

于 2015-05-17T10:07:24.010 に答える