Vc cria uma conexão Hibernate
Na query do relatório escolha o tipo HQL
exemplo:
From Pessoa p where p.codigoPessoa = $P{PcodigoPessoa}
Esse $P{PcodigoPessoa} é o parametro que vc vai passar para o relatório
Temos que criar esse parametro em "Report Inspector" / Parameters / Adiciona Parametro e diga seu tipo e valor default.
na Aplicação Web:
String codigoPessoa = req.getParameter("codigoPessoa") == null ? "0" : req.getParameter("codigoPessoa");
Session session = HibernateUtil.getSession();
ServletOutputStream servletOutputStream = res.getOutputStream();
try {
Map<String, Object> parameters = new HashMap<String, Object>();
// é o parametro do codigo da pessoa, que vai para o relatório
parameters.put("PcodigoPessoa", Integer.parseInt(codigoPessoa));
// è preciso passar a sessão para do hibernate para o relatório
parameters.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, session);
InputStream reportStream = getClass().getResourceAsStream("/com/fejal/relatorios/RelPessoa.jasper");
res.setContentType("application/pdf");
res.setHeader("Content-disposition", "attachment;filename=FichaPessoa.pdf");
JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream, parameters);
} finally {
session.close();
}
servletOutputStream.flush();
servletOutputStream.close();