Java Hibernate获取JasperUnmanager的连接对象
我在一个项目中使用Hibernate 3.2.5和Jasper 3.7.2为应用程序生成一些报告 有没有办法从HibernateSessionFactory对象获取连接对象?我只想处理一个连接,因为此时我必须有一个ODBC连接的属性文件,该文件将通过JasperUnmanager静态方法处理Jasper,并为另一端休眠 这是我传递连接所需的方法:Java Hibernate获取JasperUnmanager的连接对象,java,hibernate,odbc,jasper-reports,Java,Hibernate,Odbc,Jasper Reports,我在一个项目中使用Hibernate 3.2.5和Jasper 3.7.2为应用程序生成一些报告 有没有办法从HibernateSessionFactory对象获取连接对象?我只想处理一个连接,因为此时我必须有一个ODBC连接的属性文件,该文件将通过JasperUnmanager静态方法处理Jasper,并为另一端休眠 这是我传递连接所需的方法: byte[] net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(InputStr
byte[] net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(InputStream inputStream, Map parameters, Connection conn) throws JRException
提前感谢。:) 我对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);
}
}
});
这非常有效,您可以在代码中可能需要连接对象的其他地方使用它。doWork可能需要您多次这样做,但创建连接对象nice是一个更干净的解决方案
SessionImpl sessionImpl = (SessionImpl) session;
Connection conn = sessionImpl.connection();
其中session
是Hibernate会话对象的名称