Olá Senhores,
hoje eu to com um problema que infelizmente nem sei se tem solução visto que já procurei bastante e apesar de já ter testado duas formas todas foram sem sucesso, mais é o seguinte eu não tenho uma conexão jdbc , estou com um aplicativo simples em Java Swing e usando JPA com Hibernate e os relatórios Jasper feitos com queryString ou seja a consulta nativa e na IDE do Jasper o mesmo foi construido com a conexao jdbc mais estes relatórios são compartilhados por duas soluções e por este motivo eu não posso alterar o mesmo.
O problema esta em como obter uma conexão usando JPA? eu ja tentei como disse duas abordagens e infelizmente deu erro
Estou fazendo desta forma
Session session = this.entityManager.unwrap(Session.class);
gerador.openReport(“Listagem de usuários”, session.connection());
Saberias se existe outra forma?
Agora estou fazendo umas alterações e vou colocar os codigos aqui
GeradorRelatorio gerador = new GeradorRelatorio("RelFR_Usuario.jasper",
parametros, "Usuarios.pdf");
Session session = this.entityManager.unwrap(Session.class);
if (session.isConnected()) {
System.out.println("Conectado");
} else {
System.out.println("Não Conectado");
}
try {
//session.doWork(gerador);
gerador.openReport("Listagem de usuários", session.connection());
/*try {
session = this.entityManager.unwrap(Session.class);
session.doWork(gerador);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro ao imprimir o relatório.\n." + ex.getMessage(), "Aviso do Sistema", JOptionPane.ERROR_MESSAGE);
}*/
} catch (JRException ex) {
JOptionPane.showMessageDialog(this, "Ocorreu um erro ao imprimir o relatório.\n." + ex.getMessage(), "Aviso do Sistema", JOptionPane.ERROR_MESSAGE);
}
class GeradorRelatorio {
private String caminhoRelatorio;
private Map<String, Object> parametros;
private boolean relatorioGerado;
private String report_dir = Constantes.REPORT_DIR;
public GeradorRelatorio(String relatorio, Map<String, Object> parametros, String nomeArquivoSaida) {
this.caminhoRelatorio = report_dir + relatorio;
this.parametros = parametros;
this.parametros.put(JRParameter.REPORT_LOCALE, new Locale("pt", "BR"));
}
public void openReport(
String titulo,
Connection conn) throws JRException {
String fileNameWithouthExtension = FilenameUtils.removeExtension(this.caminhoRelatorio);
String jrxmlFile = fileNameWithouthExtension + ".jrxml";
File file = new File(jrxmlFile);
if (file.exists()) {
JasperCompileManager.compileReportToFile(jrxmlFile.toString(), this.caminhoRelatorio);
}
JasperPrint print = JasperFillManager.fillReport(this.caminhoRelatorio, this.parametros, conn);
this.relatorioGerado = print.getPages().size() > 0;
// abre o JasperPrint em um JFrame
viewReportFrame( titulo, print );
}