Foros del Web » Programación para mayores de 30 ;) » Java »

JasperReport + Hibernate

Estas en el tema de JasperReport + Hibernate en el foro de Java en Foros del Web. Hola. alguien tiene idea de como trabajar con JasperReport utilizando Hibernate como fuente de datos? Es decir obtener los datos de mi reporte desde clases ...
  #1 (permalink)  
Antiguo 19/06/2007, 08:45
Avatar de pyanqn  
Fecha de Ingreso: noviembre-2005
Mensajes: 331
Antigüedad: 18 años, 4 meses
Puntos: 8
Exclamación JasperReport + Hibernate

Hola. alguien tiene idea de como trabajar con JasperReport utilizando Hibernate como fuente de datos? Es decir obtener los datos de mi reporte desde clases del framework?

ideas, links, sugerencias...
  #2 (permalink)  
Antiguo 19/06/2007, 08:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 5 meses
Puntos: 51
Re: JasperReport + Hibernate

Yo la unica sugerencia que puedo hacer, y es en general, es lo que yo hago/hice. Aprender a usar JasperReports con fuentes de datos XML y luego puedes aplicarselo a cualquier cosa que pueda generar XML... desde ficheros estáticos para pruebas a cualquier clase capaz de generar texto (formateandolo en XML, claro).

S!
  #3 (permalink)  
Antiguo 22/09/2007, 10:12
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
Re: JasperReport + Hibernate

Hola, q tal?
Es simple. Tienes que tener en cuenta lo siguiente:
1. Ejecutar iReport usando iReport.bat que está ubicado en el directorio donde instalaste iReport. (esto es fundamental ya q con el .exe parece ser q no funciona según mi experiencia y lo que pude averiguar en internet)

2. Editar el CLASSPATH (Options > Classpath) y agregar lo siguiente:
  • Driver JDBC
  • Hibernate mappings
  • hibernate.cfg.xml
  • Clases compiladas de tu App (.class)

3. Crear la conexion Hibernate. Para ello ir a Data > Connections/Data Sources, clickear en New y elegir Hibernate Connection.
Luego ingresas el nombre que quieras a tu conexion. Presiona Test y si todo va bien te aparecerá un cuadro de diálogo avisandote que la conexion fue exitosa.
En este caso iReport busca en el CLASSPATH el archivo de configruación de Hibernate (hibernate.cfg.xml) con el cual obtendrá los parámetros de configuración.

4. Listo! Solo resta crear tu Query HQL yendo a Data > Report Query. Elegir lenguaje HQL e ingresar cualquier sentencia HQL. Asegurate de tener clickeado el Check 'Automatically Retrieve Fields' para ver el resultado de la Query en el panel DER.

Espero que les sirva.
Te dejo el link del ejempli que me resulto muy útil:
http://jtri.sourceforge.net/en/report/ireportHibernate.html"
Código del Ej (iReport_with_hibernate-0.5.3.zip): http://sourceforge.net/project/showfiles.php?group_id=132623

Saludos!
Seba.
  #4 (permalink)  
Antiguo 09/07/2008, 02:31
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: JasperReport + Hibernate

Hola, soy algo nueva en esto pero me gustaría poner lo que he desarroyado ya que a mi me costó un montón obtener información y al final como a veces pasa salió solo.
Quería utilizar jasperreport con hibernate y obtener un pdf, en este caso lo obtengo que se pueda guardar o no, y quería que la query se incorporara dentro del pdf no hacerla con el ireport, os diré paso a paso lo importante.
1. Podemos hacer el jrxml desde ireport sin ningún problema pero OJO MUY IMPORTNTE los nombres de los field y de los textFieldExpression tienes que ser los mismos que en el name que tenemos mapeado y en el bean para obtenerlo, pongo unas lineas para que lo veais:
jrxml:<field name="valor" class="java.lang.String"/> ... <textFieldExpression class="java.lang.String"><![CDATA[$F{valor}]]></textFieldExpression>
hbm.xml(mapeo) <property name="nombre" type="java.lang.String" column="dom_nombre_tx" length="20" />
<property name="valor" type="java.lang.String" column="dom_valor_tx" length="20" />
Esto es lo mas importante para que los valores nos salgan en el reporte
y por último hice una clase para obtener los bytes y sacarlo en el pdf os pongo todo junto aunque es un struts y tiene distintas partes.

//sitio donde yo tengo mis jrxml
public static final String REPORTE_IMPORTE = "/report/prueba_Mano.jrxml";

public static byte[] sacarReporte(String tipoReporte) throws ClassNotFoundException,
SQLException, JRException {

JasperDesign dis enioReporte;
JRDesignQuery queryReporte;
//Ruta de Archivo Jasper
Reporte reporte = new Reporte();
String fileName;
byte[] bytes = null;
//hibernateUtil es una clase propia que me devuelve un SessionFactory
Session session = HibernateUtil.getSessionFactory().getCurrentSessio n();
session.beginTransaction();
//UsuarioBean es donde tengo los geter y seter, para esto si hay ejemplos
//por lo que no me estiendo
List usuarios = session.createQuery("from UsuarioBean").list();
fileName = reporte.Path(REPORTE_IMPORTE);

//cargamos el archivo
disenioReporte = JRXmlLoader.load(fileName);
//lo compilamos
JasperReport report = JasperCompileManager.compileReport(disenioReporte) ;
//obtenmos de forma adecuada los valores de las select para incorporalos.
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(usuarios);
//HibernateQueryResultDataSource ds = new HibernateQueryResultDataSource(usuarios,campos);

//obtenemos lo que vamos a sacar
bytes = JasperRunManager.runReportToPdf(report, parameters, ds);
return bytes;
}
//método para obtener el path del archivo
public String Path(String tipoReporte) {


URL url = this.getClass().getResource(tipoReporte);

return url.getPath();

}

}

Una vez obtenido esto lo saco mi metodo es.
public void imprime(HttpServletResponse response, String tipoReporte)
throws Exception {


byte[] bytes = Reporte.sacarReporte(tipoReporte);
if(bytes!=null){

// Con esta sentencia hacemos que se pueda descargar el archivo y guardarlo pero sin extensión
//response.setContentType("application/x-download");
//convertimos el archivo en pdf y nos pregunta que queremos hacer y lo abrimos o lo guardamos en pdf
response.setHeader("Content-Disposition", "attachment; filename=informe.pdf" );
//Si solo ponemos esta parte de código nos saldrá el archivo en pdf directamente
response.setContentLength(bytes.length);
OutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();


}

try{

System.out.println("El reporte está escrito");
}
catch (Exception e){

System.out.println("error");

}


}

Espero que les sirva
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:00.