Top Posts

Série Continuous Integration: Clonando workpace no Jenkins

Continue lendo

Relatório Ireport + JasperReport com Hibernate

Posted by camilolopes | Posted in Hibernate | Posted on 17-12-2010

26

olá Pessoal,

Neste post vou mostrar como gerar um relatório usando Ireport de onde as informações vem do BD. Além disso usaremos o Hibernate para conexão. É bem comum uma aplicação o cliente querer algum tipo de relatório. Para gerar os relatorios vamos usar Ireport e o JasperReport. Fiz uma pesquisa rapida na internet e vi alguns posts eram limitados à criar relatórios sem banco de dados, alguns com banco de dados, porem confusos de entender eu sentir dificuldade de compreender,levando em conta que nunca tivesse visto o assunto. E no “mundo real”, se gera relatório de uma base de dados, que na maioria das vezes é um banco de dados. Bom eu tentarei ser pratico no post e a teorica abordada aqui será o suficiente para saber o que significa se deseja se aprofundar no assunto sugiro usar o velho Google e participar das comunidades ou comprar um livro.

Outro ponto  é que neste post será um Java Project normal, em outro post veremos como fazer isso em JEE em um projeto JSF.

Lets go..

Iniciando

Vou levar em conta, que você já tem um BD e uma tabela de onde deseja extrair a informação. Essa é a minha:

ireportbdus

Requisitos:

Você precisa fazer o download do Ireport. A versão mais recente é 3.7.6 neste momento que escrevo o post.


Configuração

copiar os .jars que estã na pasta ext do Ireport para o projeto Java . Se for JEE, adicionar na pasta lib. Não esquecer do .jar para o banco de dados caso os dados relatório venha de um banco de dados, que é o mais real e comum.

  • commons-beanutils

  • commons-collections

  • commons-digester

  • commons-logging

  • groovy-all

  • iText

  • poi

  • jasperreports


Veja o que é Ireport & JasperReport (de forma simples e direta):

Ireport = é uma especie de IDE para criação do layout do seu relatório, ou seja, que cara vai ter e o que vai ter no seu relatório. E é aqui que fazemos a conexão com o banco de dados e consequentemente as tabelas e onde informamos quais colunas de uma tabela vai aparecer no relatório. Ele gera um arquivo .jrxml que será lido por JasperReport.


JasperReport = É uma API que permite nossa classe Java estabelecer uma “conversa” com o nosso layout-relatório. Isso vem a ser util para que sua aplicação Java, gere relatórios em um único ambiente. O usuário não percebe que foi gerado por algo “fora” Java(isso para aqueles que sabem o que é Java).

Na pratica como acontece:

– o desenvolvedor vai lá e cria o layout do relatório com base no proposito deste e põe logomarca da empresa e os dados que devem aparecer. Não precisa ser um webdesigner para desenhar o layout. E é no Ireport que falamos de onde vem a info se será de um BD ou não.

-No JasperReport apenas setamos onde está o layout .jrxml do Ireport e em seguida informamos e é aqui que informamos para qual tipo vamos exportar o relatório: PDF,XML, HTML, TEXT. Podemos dizer que será gerado um arquivo em um local especifico ou se for um JEE, que vai ser carregado pelo Browser.

Note: os nomes das variaveis da classe devem estar iguais aos nomes dos campos (fields) no layout do relatório.

Mão na massa

Vamos colocar mão na massa por partes:

Parte 1: ir para o Ireport (não vou enumerar porque vai ficar zuado a formatação)

vamos primeiro criar um arquivo no Ireport e seguir as instruções do assistente que é bem simples:

ireportimg1

Na parte de banco de dados basta informar os de conexão do banco.

ireportimg2

Feito isso temos o o relatório na tela e podemos edita-lo. Observe que já foi montando com os dados do banco de dados, ou seja, com os nomes da coluna e nos devidos locais, isso acontece no Ireport mais recente, as vezes antigas não faziam isso.

ireportimg3

Parte 2: No Eclipse

Agora no Eclipse precisamos criar um projeto. Este será um Java Project.

Passos:

-Crie o Bean (os nomes entre o bean e os fields no layout devem ser os mesmos)

-Crie conexão com banco de dados (usamos o Hibernate)

-Crie um método List na classe DAO usando HQL com a query que deseja;

-importar para o projeto do eclipse o arquivo jrxml

-crie a classe main com exportando o relatório


Abaixo veja a estrutura do meu projeto

ireportprojectbdmain

note: é recomendavel colocar o .jrxml em um package para terceiro não ter acesso, mas coloquei fora só para mostrar que é possível rodar fora sem problemas algum.

A classe Bean

  1. @Entity
  2. @Table(name=“tusuario”)
  3. public class Usuario {
  4. @Column
  5. private String nome;
  6. @Column
  7. private String email;
  8. @Id
  9. private int id;
  10. //gets/sets omitidos

Gerando o relatório

Essa é a classe principal que de fato faz gerar o relatório em PDF, pegando o layout definido no Ireport o JasperReport faz a conversão, veja:

  1. public class GerarRelatorio {
  2. public static void main(String[] args) throws JRException,SQLException {
  3. System.out.println(“Gerando relatório…”);
  4. UsuarioDAO usuarioDAO = new UsuarioDAO();
  5. List listaUs = usuarioDAO.listaTodos();
  6. JasperReport pathjrxml = JasperCompileManager.compileReport(“relatorio/reportex.jrxml”);
  7. JasperPrint printReport = JasperFillManager.fillReport(pathjrxml, nullnew JRBeanCollectionDataSource(listaUs));
  8. JasperExportManager.exportReportToPdfFile(printReport, “relatorio/reportex.pdf”);
  9. System.out.println(“Relatorio gerado”);
  10. }

Entendendo o código acima

Minha classe UsuarioDAO: ela retorna todos os usuarios atraves de uma query HQL.

  1. public List listaTodos(){
  2. Query query = getSession().createQuery(“from Usuario”);
  3. List listaUs = query.list();
  4. return listaUs;
  5. }

Note: Informando o JRXML: Link interessante

Na classe relatório precisamos informar onde está o arquivo jrxml(nao esqueca de criar o folder)

  1. JasperReport report = JasperCompileManager.compileReport(“relatorio/reportcamilo.jrxml”);

Dica:

Se o jrxml estiver no mesmo package que a classe que gera o relatório o código acima é valido do contrario, deve ser conforme abaixo:

  1. “../relatorio/reportblog.jrxml”

Passando o DATA SOURCE

O data source nada mais eh que uma lista com os dados que serao inseridos no relatorio.

  1. JasperPrint print = JasperFillManager.fillReport(report, null,new JRBeanCollectionDataSource(listaUS));

obs. No primeiro argumento temos o caminho do layout do relatorio gerado pelo ireport, parametro pode ser null e criamos um data source com o conteudo da lista que tem o resultado HQL

  1. class dao
  2. public List listaUsuario(){
  3. Query query = getSession().createQuery(“from Tusuario”);
  4. List lista = query.list();
  5. return lista;

em outra classe ….
TUsuarioDAO tusuariodao = new TUsuarioDAO();
List listaUS = tusuariodao.listaUsuario();

em outra classe …

  1. TUsuarioDAO tusuariodao = new TUsuarioDAO();
  2. List listaUS = tusuariodao.listaUsuario();

Exportando para um Formato

Para exportar temos metodos para cada formato de exportacao

  1. JasperExportManager.exportReportToPdfFile(print,“relatorio/RelatorioUser.pdf”);

obs. No primeiro argumento temos a variavel que tem o relatorio preenchido e o caminho que deve ser exportado .So rodar a classe main, agora.

Download do Projeto

Vou ficando por aqui espero que tenham gostado do post.

See you next post. :)

Related Posts with Thumbnails

Comments (26)

Opa Camilo, quero tirar uma dúvida:
E se eu tenho uma mapeamento one-to-one e quero trazer os dados de duas tabelas? Meu relatório ta certinho no iReport, masto tentando gerar ele através da minha aplicação e da erro. Tem alguma idéia? Eu criei um DAO Generico:

public class genericDAO implements InterfacegenericDAO
{
private final Session sessao;
Transaction transacao= null;

public genericDAO(Object objeto)
{
this.sessao = hibernate_util.getSession();
this.objeto = objeto;

}
public void inserir()
{
try
{
transacao = sessao.beginTransaction();
sessao.save(objeto);
transacao.commit();
}
catch(HibernateException erro)
{
JOptionPane.showMessageDialog(null, erro);
transacao.rollback();
}
}

public void excluir()
{
try
{
transacao = sessao.beginTransaction();
sessao.delete(objeto);
transacao.commit();
}
catch(HibernateException erro)
{
JOptionPane.showMessageDialog(null, “Erro ao deletar dados.: “+erro);
transacao.rollback();
}

}

public void atualizar()
{
try
{
transacao = sessao.beginTransaction();
sessao.update(objeto);
transacao.commit();
}
catch(HibernateException erro)
{
JOptionPane.showMessageDialog(null, “Erro ao alterar dados.: “+erro);
transacao.rollback();
}

}

public List listar(String classe)
{
List lista = sessao.createQuery(“from “+classe+” order by end_id”).list();
return lista;
}

public List listar_todos(String classe) {
List lista = sessao.createQuery(“from “+classe).list();
return lista;
}

}

olá Plabo, boa noite,

qual erro?

Opa Camilo, ta difícil postar o erro, a página não carrega o comente…xD

log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : end_id
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:123)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:96)
at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:100)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:864)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:828)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1439)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:127)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:903)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:832)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at Relatorios.JasperTest.main(JasperTest.java:37)
Caused by: java.lang.NoSuchMethodException: Unknown property ‘end_id’ on class ‘class [Ljava.lang.Object;’
at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1322)
at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:770)
at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:846)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)
… 12 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 23 segundos)

Pelo que entendi ele reclama que não ta achando meus campos no banco, só que to achando esquisito pois esta igualzinho ao banco.

Olá Camilo!
Estou baixando o projeto, mas nao consigo descompactá-lo. O que devo fazer? Estou usando o win 7 e winrar.
Abs

ola plabo,

pelo que vi nas mensagem de erro, tem um campo desconhecido, dá uma olhada ai, e ver como tá. olha, tb o mapeamento do teu hibernate.

flw.

Franklin,
o projeto está no formato .zip, eu ja tive problema ao usar o winrar para descompactar formatos .zip. tenta usar o winzip.
abracos,

Opa camilo, tentei pegar o seu projeto mas ta vindo corrompido. Não cosigo abrir nem usando o winrar nem usando o winzip!

Se puder atualizar agradeço

Forte Abraço!

Opa! Jeferson,

subi um novo arquivo dá uma olhada, por favor.

abracos,

Ahhh, valeu Camilo

Agora ta beleza.

Brigadão!

Só pra confirmar, esse novo projeto ja ta configurado pro jsf?

olá Camilo boa noite,cara esse exemplo funciona quando por exemplo o nome das minhas colunas no banco estão diferentes da minha entidade java por exemplo se eu tiver no bd varchar nome_pessoa e na minha entity eu tenho @Column(name=”nome_pessoa”) private String nomePessoa ?? não corro risco de pegar uma exceção de campo desconhecido?vc poderia ao inves de usar sql puro no iReport ter usado a propria HQL ,isso é só um sugestão pra um post novo rsrsrs.Valeu camilo muito bons seus tutoriais ,parabéns peo trabalho

olá Ricardo,
Essa questao de nome é bem pontual, pois tudo depende do projeto, nem sempre nos desenvolvedores temos o poder de alterar nomes no banco e vamos só saber como está e vamos trabalhar em cima daquilo. Se tiver realmente com o nome diferente vamos ter uma exceção. Mas, até ai não tem problema nenhum, é pra isso que serve as exceções nos alertar de algo e vc vai ter ela de imediato antes de colocar tudo em produção. Tb concordo de usar o HQL, pq ai vamos trabalhar com o valor do bean, bem pensado :).
valeu!

Opa gostaria do mesmo post para javaEE, jsf…
Atenciosamente Sóstenes Cordeiro Alves jr.

Ola Camilo!!!
Veja o erro que esta dando … o que estou fazendo de errado?
o meu note está com SO de 64.
Grato abs

11/03/2012 16:55:43 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre1.6.0_02\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared
11/03/2012 16:55:43 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:fj21-tarefas’ did not find a matching property.
11/03/2012 16:55:43 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.j2ee.server:Modelo_Projeto_Final_v1.39’ did not find a matching property.
11/03/2012 16:55:43 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:IReportBlog’ did not find a matching property.
11/03/2012 16:55:43 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-bio-8080”]
11/03/2012 16:55:43 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“ajp-bio-8009”]
11/03/2012 16:55:43 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 759 ms
11/03/2012 16:55:43 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
11/03/2012 16:55:43 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.23
11/03/2012 16:55:44 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
INFO: Parsing configuration file [struts-default.xml]
11/03/2012 16:55:44 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
INFO: Parsing configuration file [struts-plugin.xml]
11/03/2012 16:55:44 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
INFO: Parsing configuration file [struts.xml]
11/03/2012 16:55:45 org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\Projeto\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\IReportBlog\WEB-INF\lib\servlet-api.jar) – jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
11/03/2012 16:55:45 org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI:
http://java.sun.com/jsf/html
is already defined
11/03/2012 16:55:45 org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsf/core is already defined
11/03/2012 16:55:45 com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Sun’s JavaServer Faces implementation (1.2_04-b07-FCS) for context ‘/IReportBlog’
11/03/2012 16:55:46 com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed.
11/03/2012 16:55:46 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-bio-8080”]
11/03/2012 16:55:46 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“ajp-bio-8009”]
11/03/2012 16:55:46 org.apache.catalina.startup.Catalina start
INFO: Server startup in 3088 ms
11/03/2012 16:55:48 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/D:/Projeto/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/IReportBlog/WEB-INF/lib/jsf-facelets.jar!/META-INF/jsf-core.taglib.xml
11/03/2012 16:55:48 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/D:/Projeto/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/IReportBlog/WEB-INF/lib/jsf-facelets.jar!/META-INF/jsf-html.taglib.xml
11/03/2012 16:55:48 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/D:/Projeto/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/IReportBlog/WEB-INF/lib/jsf-facelets.jar!/META-INF/jsf-ui.taglib.xml
11/03/2012 16:55:48 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/D:/Projeto/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/IReportBlog/WEB-INF/lib/jsf-facelets.jar!/META-INF/jstl-core.taglib.xml
11/03/2012 16:55:48 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/D:/Projeto/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/IReportBlog/WEB-INF/lib/jsf-facelets.jar!/META-INF/jstl-fn.taglib.xml
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
11/03/2012 16:55:53 com.sun.faces.application.ActionListenerImpl processAction
SEVERE: java.lang.NullPointerException
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:97)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at br.com.camilolopes.dao.UsuarioDAO.listaUSALL(UsuarioDAO.java:11)
at br.com.camilolopes.controler.ControlerUS.gerarRelatorioUS(ControlerUS.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
… 24 more
11/03/2012 16:55:53 com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{controlerUS.gerarRelatorioUS}: java.lang.NullPointerException
javax.faces.FacesException: #{controlerUS.gerarRelatorioUS}: java.lang.NullPointerException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:97)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
… 23 more
Caused by: java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at br.com.camilolopes.dao.UsuarioDAO.listaUSALL(UsuarioDAO.java:11)
at br.com.camilolopes.controler.ControlerUS.gerarRelatorioUS(ControlerUS.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
… 24 more
11/03/2012 16:55:53 com.sun.faces.lifecycle.LifecycleImpl phase
WARNING: executePhase(INVOKE_APPLICATION 5,com.sun.faces.context.FacesContextImpl@edec92) threw exception
javax.faces.FacesException: #{controlerUS.gerarRelatorioUS}: java.lang.NullPointerException
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:105)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.FacesException: #{controlerUS.gerarRelatorioUS}: java.lang.NullPointerException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
… 19 more
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:97)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
… 23 more
Caused by: java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at br.com.camilolopes.dao.UsuarioDAO.listaUSALL(UsuarioDAO.java:11)
at br.com.camilolopes.controler.ControlerUS.gerarRelatorioUS(ControlerUS.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
… 24 more
11/03/2012 16:55:53 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/IReportBlog] threw exception [null] with root cause
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at br.com.camilolopes.dao.UsuarioDAO.listaUSALL(UsuarioDAO.java:11)
at br.com.camilolopes.controler.ControlerUS.gerarRelatorioUS(ControlerUS.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

olá Frank,

É dificil eu conseguir ler todo log de erro aqui na pagina comentarios, pode me enviar por email, please? Mas, passando o olho eu vi um NullPointer na sua aplicação então já tem ideia do que seja ne?

abracos,

Ola Camilo, cara fiquei na dúvida de como fazer se no meu relatorio a busca é em duas tabelas, um INNER JOIN. Poderia me explicar?

vlw

Jonathas,
Eu normalmente faço isso pelo Hibenrate no HQL e quando este conecta ao Ireport já faz o trabalho dele. Se seu HQL por exemplo, está certinho vai gerar o report.
abraco,

Boa noite Camilo, tudo bom?
Seguindo seu tutorial ocorre o seguinte erro

ar 21, 2013 10:28:19 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/lojanet] threw exception [getOutputStream() has already been called for this response] with root cause
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:633)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
at com.sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.java:723)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.createResponseWriter(FaceletViewHandlingStrategy.java:1009)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:382)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)

Sabe me dizer o que pode ser?
Obrigado.

[]s

Denis,

Nunca passei por esse erro, mas olhando ele está bem generico, talvez vc tenha feito algo diferente do post.

abracos

Olá camilo,

digamos que tivéssemos duas tabelas Usuario e telefone.
Como ficaria o data source e o relatorio?

Obrigado e parabéns!

@Vinicius

Apenas complementando para você entender melhor…

Na classe Usuario teríamos um objeto Telefone.

Tentei fazer algo semelhante e obtive o seguinte erro (tabelas diferentes – Rpa e Empresa)

Error retrieving field value from bean : empresa_cnpj

Vinicius,
O que muda é a pesquisa. O importante é a sua query. Pela mensagem de erro, nao tem o atribudo empresa_cnpj. Veja como declarou.

@camilolopes
Olá camilo, obrigado!

Estava fazendo apenas um “From Rpa” que me trazia apenas o empresa_id.

Mais tarde tento alterar a consulta e te aviso se consegui, uma outra duvida, como faço para dar apelido ao campo na minha consulta com inner join usando a JPQL.

Minha query está atualmente assim SELECT e from Rpa e where e.id like :id”

Bom dia, Camilo

Gostaria de uma informação sou novo no ramo do Ireport, porém estou com um projeto onde preciso fazer um relatório que seja exportado no Excel, porém cada aba do Excell será um relatório diferente. Você sabe informar qual pacote e codigo do XML posso utilizar. Pois faço a procedure já esta feita e tentei fazer os relatórios todos com um nome e ajuntei todos em um só com o subreport, porém no momento de exportar no Excel ele não separa por abas.

Ficarei grato se conseguir me ajudar

olá Carlos,
Nunca separei em abas usando o ireport.Teria que ver na documentação como funciona.
flw.

Write a comment