1

我在项目中使用 Hibernate 3.2.5 和 Jasper 3.7.2 为应用程序生成一些报告。

有没有办法从 HibernateSessionFactory 对象中获取连接对象?我只想处理一个连接,因为此时我必须有一个用于 ODBC 连接的属性文件,该文件将通过 JasperRunManager 静态方法处理 Jasper,并为另一端处理 Hibernate。

这是我需要通过连接的方法:

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

提前致谢。:)

4

2 回答 2

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

这非常有效,您可以在代码中可能需要它的其他地方使用连接对象。doWork 可能需要您多次执行此操作,但创建一个连接对象 nice 是一种更简洁的解决方案。

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

sessionHibernate Session 对象的名称在哪里

于 2015-05-17T10:07:24.010 回答