Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 19-jun-2007, 08:45   #1 (permalink)
pyanqn ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2005
Mensajes: 263
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...
pyanqn está desconectado   Responder Citando
Antiguo 19-jun-2007, 08:59   #2 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.515
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!
GreenEyed está desconectado   Responder Citando
Antiguo 22-sep-2007, 10:12   #3 (permalink)
sebasao ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
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.
sebasao está desconectado   Responder Citando
Antiguo 09-jul-2008, 02:31   #4 (permalink)
Nefernani ha deshabilitado el karma
 
Fecha de Ingreso: julio-2008
Mensajes: 3
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
Nefernani está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 19:14.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93