Hibernate + JasperReport iReport [problema nao resolvido]

2 respostas
JotaJota

olá para todos novamente

estou com algumas duvidas na criação de relatório
eu estou tentando implementar o iReport com o Hibernate daquele projeto de prova (Departamento de Recrutamento ) que a gente fez;
na hora que a gente escreve:

byte[] bytes = net.sf.jasperreports.engine.
                    JasperRunManager.runReportToPdf(TEMPLATE, null, c);

o runReportToPdf pede uma Connection, no hiberport eu tenho uma Session ao inves da conexão.

Como faço para que ao inves de criar passar como parametro uma Connection eu passar uma Session?
teria como pegar uma Connection de uma Session?
=\

abaixo segue o codigo que eu criei no servlet com meu proprio pool de conexao sem o hibernate

protected void processRequest(HttpServletRequest request,
            HttpServletResponse response)
            throws ServletException, IOException {
        
        
        Connection c = null;
        try{
            try{
                HashMap param = new HashMap();
                param.put("nome", "M%");
                c = Pool.getCon();
                byte[] bytes = net.sf.jasperreports.engine.
                        JasperRunManager.runReportToPdf(TEMPLATE, null, c);
                if (bytes != null){
                    String strMIME = "application/pdf";
                    ServletOutputStream out = response.getOutputStream();
                    response.setContentType(strMIME);
                    response.setHeader("content-Disposition", "attachment;filename=\"relatorio.pdf\"");
                    response.setContentLength(bytes.length);
                    out.write(bytes);
                    out.flush();
                    out.close();
                    
                }
                
            }finally{
                Pool.devolveCon(c);
            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }

Quem puder me ajudar , desde já eu agradeço
Obrigado a todos!
aguardando respostas =D

2 Respostas

J

Jota, eu utilizo no jasper sem a camada de DAO.

Estou utilizando o iBatis para persistências de dados, na aplicação utilizo a camada DAO, mas quando gero relatórios utilizo a SQl direta no report, com a conexão com o banco de dados.

Properties props = Resources

.getResourceAsProperties("br/cisp/resources/database.properties");

String url = props.getProperty("url");

String driver = props.getProperty("driver");

String username = props.getProperty("username");

String password = props.getProperty("password");

Class.forName(driver).newInstance();

Connection conn = DriverManager.getConnection(url, username, password);
byte[] bytes = null;

	try {
		// carrega os arquivos jasper
		JasperReport relatorioJasper = (JasperReport) JRLoader
				.loadObject(context
						.getRealPath("/WEB-INF/reports/RelatFichaAnaliticaTeste.jasper"));

		// direciona a saida do relatorio para um stream
		bytes = JasperRunManager.runReportToPdf(relatorioJasper,
				parametros, conn);

		if (bytes != null && bytes.length &gt 0) {
			// envia o relatório em formato PDF para o browser
			response.setContentType("application/pdf");
			response.setContentLength(bytes.length);
			ServletOutputStream ouputStream = response.getOutputStream();
			ouputStream.write(bytes, 0, bytes.length);
			ouputStream.flush();
			ouputStream.close();
		}

	} catch (JRException e) {
		e.printStackTrace();
	} finally {
		conn.close();
	}
	
	return null;
}

}

JotaJota

jonimca, Eu nunca ouvi falar sobre IBatis, mas vou dar uma pesquisada,
da mesma forma eu entendi sim o que vc fez, achei inteiressante sua solução, mas eu queria uma independencia mais clara de uma conexão manual sabe ,
Eu vou testar dessa maneira que vc me ensinou
Vlw pela ajuda aamigo
t+ :smiley:
Depois eu posto se deu certo ou nao vlw !

Criado 25 de junho de 2007
Ultima resposta 25 de jun. de 2007
Respostas 2
Participantes 2