2012-04-18 49 views
1

我在項目中使用Hibernate 3.2.5,Jasper 3.7.2爲應用程序生成一些報告。Hibernate獲取JasperRunManager的連接對象

有什麼辦法從HibernateSessionFactory對象中獲取連接對象?我只想處理一個連接,因爲此時我必須有一個ODBC連接的屬性文件,它將通過JasperRunManager靜態方法來處理Jasper,另一方面還有Hibernate。

這是我需要通過連接的方法:

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

在此先感謝。 :)

回答

3

我曾與休眠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是一個更乾淨的解決方案。

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

哪裏session是Hibernate的Session對象的名稱