La Web del Programador: Comunidad de Programadores
 
    Pregunta:  48998 - JASPERREPORT + HIBERNATE
Autor:  Nicolas Barone
Tengo una pregunta, como hago para pasarle la coneccion al momento de llamar a la sentencia:
JasperPrint jasperPrint = JasperFillManager.fillReport(fileName,parameters);

Yo en mi caso como uso Hibernate, como hago?

Map parameters = new HashMap();
parameters.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, session);

Transaction transaction = session.beginTransaction();

Encontre esto pero al momento de visualizarlo no muestra el reporte, lo muestra vacio. Me podrian ayudar?

  Respuesta:  Nicolas Barone
Aca les mando el código, estoy usando MyEclipse + hibernate+ JasperReport 1.2.5 con todas las librerias de este.

//Ruta en donde se encuentra el .jasper
String fileName = "D:\\reports\\PruebaAddingGroup.jasper";
//Ruta destino del pdf
String destFileNamePdf = "D:\\temp\\PruebaAddingGroup.pdf";

Transaction tx = null;
Session sess = null;
try{

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
sess = sessionFactory.openSession();

tx = sess.beginTransaction();

Map parameters = new HashMap();
/*
PARAMETER_HIBERNATE_SESSION = Parámetro incorporado que lleva a cabo el valor de la sesión de Hibernate que se utilizará para crear la consulta.
*/
parameters.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, sess);
//Preparacion del reporte (en esta etapa se inserta: .jasper, el valor del query en el reporte, y la conexion).
JasperPrint jasperPrint = JasperFillManager.fillReport(fileName,parameters,sess.connection());

//Creación del PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, destFileNamePdf);

//Imprimimos en pantalla el reporte
JasperViewer.viewReport(jasperPrint);

}catch (HibernateException e) {
if(tx != null)tx.rollback();
e.printStackTrace();
}catch(JRException e){
e.printStackTrace();
}finally{
sess.close();
}