Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate获取JasperUnmanager的连接对象_Java_Hibernate_Odbc_Jasper Reports - Fatal编程技术网

Java Hibernate获取JasperUnmanager的连接对象

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

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

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

这是我传递连接所需的方法:

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会话对象的名称