Problema com JasperReport e lista

Bom dia galera, estou tentando gerar um relatório e estou obtendo erro vou postar o DAO de onde obtenho a lista e o MB onde tem o método que gera o relatório, se alguem puder me ajudar agradeço.

metodo DAO que retorna a lista


@SuppressWarnings("unchecked")
	public List<Usuario> listaTodos(){
		EntityManager em = FabricaEM.obterEM();
		
		StringBuffer hql = new StringBuffer();
		hql.append("SELECT d.nome FROM Usuario d ");
		
		Query query = em.createQuery(hql.toString());
		
		return (List<Usuario>) query.getResultList();
	}

Método do MB que gera o relatório


public void relatorio() {
		try {
			FacesContext context = FacesContext.getCurrentInstance();
			ServletContext servletContext = (ServletContext) context.getExternalContext().getContext();
			String caminhoRelatorio = servletContext.getRealPath("/WEB-INF/relatorio/rel3.jasper");
			HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
			response.setContentType("application/pdf");
			response.addHeader("Content-disposition", "attachment; filename=\"arquivo.pdf\"");
						
			UsuarioDAO usuarioDAO = new UsuarioDAO();
			List<Usuario> listaUs = usuarioDAO.listaTodos();
			
			JasperPrint impressao = JasperFillManager.fillReport(caminhoRelatorio, null, new JRBeanCollectionDataSource(listaUs));  
	        JasperExportManager.exportReportToPdfStream(impressao, response.getOutputStream());  
	        context.getApplication().getStateManager().saveView(context);  
	        context.responseComplete();  		

		} catch (Exception e) {
			System.out.println("Erro: " + e.getMessage());
		}

	}

Aqui o erro…

Ago 28, 2013 12:08:39 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
Advertência: #{cc.attrs.refClasse.cancelar}: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
javax.faces.FacesException: #{cc.attrs.refClasse.cancelar}: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at br.com.aquareef.view.listener.EncodingFilter.doFilter(EncodingFilter.java:20)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at br.com.aquareef.opensessioninview.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:27)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 29 more
Caused by: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
	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:1331)
	at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1232)
	at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1208)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1577)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:149)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:932)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
	at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
	at br.com.aquareef.view.bean.usuario.ManterUsuarioMB.cancelar(ManterUsuarioMB.java:105)
	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:278)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at com.sun.faces.facelets.el.ContextualCompositeMethodExpression.invoke(ContextualCompositeMethodExpression.java:177)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 30 more
Caused by: java.lang.NoSuchMethodException: Unknown property 'codregistro' on class 'class java.lang.String'
	at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1313)
	at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:762)
	at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)
	at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
	at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)
	... 53 more

++++++++++afterPhase9041a2f929d8ee8e2da555fa918bdea5
Ago 28, 2013 12:08:39 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/AquaReef] threw exception
java.lang.RuntimeException: javax.servlet.ServletException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
	at br.com.aquareef.opensessioninview.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:34)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.servlet.ServletException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at br.com.aquareef.view.listener.EncodingFilter.doFilter(EncodingFilter.java:20)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at br.com.aquareef.opensessioninview.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:27)
	... 16 more
Caused by: javax.faces.el.EvaluationException: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	... 22 more
Caused by: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : codregistro
	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:1331)
	at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1232)
	at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1208)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1577)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:149)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:932)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
	at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
	at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
	at br.com.aquareef.view.bean.usuario.ManterUsuarioMB.cancelar(ManterUsuarioMB.java:105)
	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:278)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at com.sun.faces.facelets.el.ContextualCompositeMethodExpression.invoke(ContextualCompositeMethodExpression.java:177)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 30 more
Caused by: java.lang.NoSuchMethodException: Unknown property 'codregistro' on class 'class java.lang.String'
	at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1313)
	at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:762)
	at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)
	at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
	at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)
	... 53 more

[quote]Caused by: java.lang.NoSuchMethodException: Unknown property ‘codregistro’ on class ‘class java.lang.String’ [/quote]Provavelmente tem alguma coisa errada no seu .jrxml :slight_smile:

pô refiz ele somente com um campo “nome” conforme o DAO e nada… no iReport utilizo o JavaBean Datasource referenciando minha entidade para buscar os campos e simplesmente coloquei o campo “nome”.

Você tem que encontrar onde está esse codregistro, aí sim vai identificar o problema. Experimente dar um Find (Ctrl + F) mesmo no arquivo .jrxml

Ainda não esta resolvido porem dentro do xml do relatório tinha realmente filds errados inclusive esse codregistro, arrumei os campos agora ele gera o PDF porem com erro (não abre dizendo que o arquivo pode estar corrompido, na verdade depois vou modificar o response para abrir de fato o PDF no browser), lança agora essa Exception: Error retrieving field value from bean : nome

Tem como postar sua entidade? Eu acho que está tendo algum problema entre o nome do atributo na entidade, e a referência a ele no relatório.

Também fui ver isso porem da uma olhada… só se for no retorno da List… ou no HQL …

[code]@Entity
@Table(name=“userreef”)
public class Usuario implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long codregistro;

@Column
private Date dataRegistro;
	
@Column(length=20)
private String email;

@Column(length=100)
private String nome;		

@Column(length=100)
private String lograd;

@Column(length=10)
private String numero;

@Column(length=30)
private String senha;

@Column(length=20)
private String comple;

@Column(length=50)
private String bairro;

@Column(length=50)
private String cidade;

@Column(length=2)
private String estado;


     and getters and setters.....

[/code]

Como o field está definido no relatório?

Assim
$F{nome}

[quote=Rodrigo Sasaki]Como o field está definido no relatório?[/quote] em XML esta assim

<field name="nome" class="java.lang.String"> <fieldDescription><![CDATA[nome]]></fieldDescription> </field>

Esta correto isso?

Assim
$F{nome}
[/quote]
Não não, isso é você utilizando ele, a definição é feita no xml, geralmente no começo. E verifique também sua queryString, ela deveria estar vazia

Assim
$F{nome}
[/quote]
Não não, isso é você utilizando ele, a definição é feita no xml, geralmente no começo. E verifique também sua queryString, ela deveria estar vazia[/quote]

Certo, vou postar o xml todo… a QS esta vazia…


<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="rel3" language="java" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="dba5e64e-b106-447b-85f0-fc96ddf0fd8e">
	<queryString>
		<![CDATA[]]>
	</queryString>
	<field name="nome" class="java.lang.String">
		<fieldDescription><![CDATA[nome]]></fieldDescription>
	</field>
	<background>
		<band splitType="Stretch"/>
	</background>
	<title>
		<band height="79" splitType="Stretch"/>
	</title>
	<pageHeader>
		<band height="35" splitType="Stretch"/>
	</pageHeader>
	<columnHeader>
		<band height="61" splitType="Stretch">
			<staticText>
				<reportElement uuid="c68117ee-8f58-48c4-9ed8-13127babe235" x="51" y="2" width="100" height="20"/>
				<textElement/>
				<text><![CDATA[nome]]></text>
			</staticText>
		</band>
	</columnHeader>
	<detail>
		<band height="125" splitType="Stretch">
			<textField>
				<reportElement uuid="b0c78b79-9600-401c-8a3e-689003ce5e04" x="51" y="30" width="100" height="20"/>
				<textElement/>
				<textFieldExpression><![CDATA[$F{nome}]]></textFieldExpression>
			</textField>
		</band>
	</detail>
	<columnFooter>
		<band height="45" splitType="Stretch"/>
	</columnFooter>
	<pageFooter>
		<band height="54" splitType="Stretch"/>
	</pageFooter>
	<summary>
		<band height="42" splitType="Stretch"/>
	</summary>
</jasperReport>

Eu acho que em algum lugar aí devia ter uma referência ao seu datasource, mas estou sem nenhum exemplo aqui pra confirmar.

Eu sugiro que você crie um relatório novo :slight_smile: Já definindo o datasource correto e tudo mais

[quote=Rodrigo Sasaki]Eu acho que em algum lugar aí devia ter uma referência ao seu datasource, mas estou sem nenhum exemplo aqui pra confirmar.

Eu sugiro que você crie um relatório novo :slight_smile: Já definindo o datasource correto e tudo mais[/quote]

Vou tentar fazer isso e lhe falo.

[quote=Rodrigo Sasaki]Eu acho que em algum lugar aí devia ter uma referência ao seu datasource, mas estou sem nenhum exemplo aqui pra confirmar.

Eu sugiro que você crie um relatório novo :slight_smile: Já definindo o datasource correto e tudo mais[/quote]
refiz e nada… mesmo erro… Error retrieving field value from bean : nome

Alguém para dar uma luz? rs… não vai por nada…

Com JRBeanCollectionDataSource não precisa definir datasource.
Veja:
#Se o relatorio é esse mesmo rel3.jasper
#Veja o caminho da compilaçao desse relatório no ireport esta nesse local mesmo ou se vc esta usando um antigo(acredite ja fiz isso e fiquei mexendo no ireport e rodando o arquivo errado)
#De um refresh no projeto para atualizar o arquivo

Para confirmar tire todos os fields $F{nome} e blabla do relatório e rode só texto estatico com um nome que vc colocou agora ex: campo estático xxxxxxxxxxxx e veja se ele gera, só para ter certeza que esse é realmente seu relatório

Ok Edu obrigado pela ajuda, vou tentar fazer isso amanha e posto o resultado, tivemos que avançar acabou o tempo da sprint então ficou essa tarefa para uma outra sprint, fazer oque…