Boa noite…
Vamos lá, para começar sou novo em java e estou a 3 dias em um erro que já tentei foruns, pesquisei, vi a documentação e nada vi sobre esse erro retornado pelo jasper quando adicionei mais 2 campos no relatório(pf, childnumber), no preview está tudo ok… porém quando rodo a aplicação e acesso o relatório ele me retorna a exception abaixo. Uso Jasper Reports com eclipse e ao gerar o relatório sobre atividades de inscritos nos benefícios ele me retorna esse erro Caused by: java.lang.NoSuchMethodException: Unknown property ‘pf’ on class ‘class br.com.cadastrobeneficios.domain.Beneficio’ o relatório rodava redondo assim como os outros rodam… porém após acrescentar duas propriedades ele deixou de rodar… segue exception, domain e report… aguardo ajuda… muito obg.
EXCEPTION:
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : pf
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:109)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:1358)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1259)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1235)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1614)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:150)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:892)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:114)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:668)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:984)
at br.com.cadastrobeneficios.relatorio.Relatorio.getRelatorioAtividade(Relatorio.java:120)
at br.com.cadastrobeneficios.bean.BeneficioBean.geraRelatorioInscritoPorAtividade(BeneficioBean.java:209)…
Caused by: java.lang.NoSuchMethodException: Unknown property ‘pf’ on class ‘class br.com.cadastrobeneficios.domain.Beneficio’
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)
… 51 more
MÉTODO QUE GERA RELATÓRIO:
public void getRelatorioAtividade(List lista) {
stream = this.getClass().getResourceAsStream("/reports/atividade.jasper");
Map<String, Object> params = new HashMap<String, Object>();
baos = new ByteArrayOutputStream();
try {
JasperReport report = (JasperReport) JRLoader.loadObject(stream);
JasperPrint print = JasperFillManager.fillReport(report, params,
new JRBeanCollectionDataSource(lista, false));
JasperExportManager.exportReportToPdfStream(print, baos);
response.reset();
response.setContentType("application/pdf");
response.setContentLengthLong(baos.size());
response.setHeader("Content-disposition", "inline: filename=relatorio.pdf");
response.getOutputStream().write(baos.toByteArray());
response.getOutputStream().flush();
response.getOutputStream().close();
context.responseComplete();
} catch (JRException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
QUERY BENEFICIO.LISTARPORATIVIDADE preenche a lista que é passada para gerar o relatório.
@Entity
@Table(name = “beneficio”)
@NamedQueries({ @NamedQuery(name = “Beneficio.listarPorAtividade”, query = “SELECT b FROM Beneficio b JOIN b.atividade a JOIN b.inscrito i WHERE a.nome = :nome AND b.dataInicio BETWEEN :dataInicio AND :dataFim”) })
public class Beneficio {
@Id
@Column(name = “codigo”)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long codigo;
@Column(name = "data_inicio", nullable = false)
@Temporal(value = TemporalType.TIMESTAMP)
private Date dataInicio;
…continua código…
MODELS BENEFICIO E INSCRITO
@Entity
@Table(name = “beneficio”)
@NamedQueries({ @NamedQuery(name = “Beneficio.listar”, query = “SELECT beneficio FROM Beneficio beneficio”),
@NamedQuery(name = “Beneficio.buscarPorCodigo”, query = “SELECT beneficio FROM Beneficio beneficio WHERE beneficio.codigo = :codigo”),
@NamedQuery(name = “Beneficio.listarPorInscrito”, query = “SELECT b FROM Beneficio b JOIN b.atividade a JOIN b.inscrito i WHERE i.nome = :nome AND b.dataInicio BETWEEN :dataInicio AND :dataFim”),
@NamedQuery(name = “Beneficio.listarPorAtividade”, query = “SELECT b FROM Beneficio b JOIN b.atividade a JOIN b.inscrito i WHERE a.nome = :nome AND b.dataInicio BETWEEN :dataInicio AND :dataFim”) })
public class Beneficio {
@Id
@Column(name = “codigo”)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long codigo;
@Column(name = "data_inicio", nullable = false)
@Temporal(value = TemporalType.TIMESTAMP)
private Date dataInicio;
@Column(name = "data_fim")
@Temporal(value = TemporalType.TIMESTAMP)
private Date dataFim;
@Column(name = "dia_semana", nullable = false)
private String diaDaSemana;
@Column(name = "horario_inicio", length = 50, nullable = false)
private String horarioInicio;
@Column(name = "horario_fim", length = 50, nullable = false)
private String horarioFim;
@NotEmpty(message = "O campo Responsável Preenchimento é obrigatório.")
@Column(name = "respreenchimento", length = 50, nullable = false)
private String responsavelPreenchimento;
@NotNull(message = "O campo Atividade é obrigatório.")
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "atividade_codigo", referencedColumnName = "codigo", nullable = false)
private Atividade atividade;
@NotNull(message = "O campo Nome é obrigatório.")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "inscrito_codigo", referencedColumnName = "codigo", nullable = false)
private Inscrito inscrito;
@Entity
@Table(name = “inscrito”)
@NamedQueries({
@NamedQuery(name = “Inscrito.listar”, query = “SELECT inscrito FROM Inscrito inscrito ORDER BY inscrito.nome ASC”),
@NamedQuery(name = “Inscrito.listarPorDataNiver”, query = “SELECT inscrito FROM Inscrito inscrito WHERE inscrito.nascimento LIKE ?”),
@NamedQuery(name = “Inscrito.buscarPorCodigo”, query = “SELECT inscrito FROM Inscrito inscrito WHERE inscrito.codigo = :codigo”),
@NamedQuery(name = “Inscrito.existeNome”, query = “SELECT inscrito FROM Inscrito inscrito WHERE inscrito.nome = ?”) })
public class Inscrito {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "codigo")
private Long codigo;
@NotEmpty(message = "O campo criança inscrita é obrigatório.")
@Size(min = 5, max = 50, message = "Tamanho inválido para o campo Criança Inscrita(5 - 50 dígitos)")
@Column(name = "crianca_inscrita", length = 50, nullable = false)
private String criancaInscrita;
@NotEmpty(message = "O campo Nome Completo é obrigatório.")
@Size(min = 5, max = 50, message = "Tamanho inválido para o campo nome (5 - 50 dígitos)")
@Column(name = "nome", length = 50, nullable = false, unique = true)
private String nome;
@NotEmpty(message = "O campo Data de Nascimento é Obrigatório.")
@Size(min = 10, max = 10, message = "Tamanh inválido para o campo data de nascimento (10 dígitos)")
@Column(name = "nascimento", nullable = false)
private String nascimento;
@NotEmpty(message = "O campo Sexo é obrigatório.")
@Column(name = "sexo", nullable = false)
private String sexo;
@Column(name = "childnumber")
private Integer childNumber;
@Column(name = "pf")
private Integer pf;
@Column(name = "cs")
private Integer cs;
@Column(name = "nis")
private String nis;
@NotEmpty(message = "O campo Registro/RG é obrigatório.")
@Size(min = 3, max = 13, message = "Tamanho inválido para o campo Registro/RG (3 - 13 dígitos.")
@Column(name = "registrorg", length = 13, nullable = false)
private String registroRg;
@NotEmpty(message = "O campo Endereço é obrigatório.")
@Column(name = "endereco", length = 50, nullable = false)
private String endereco;
@Column(name = "fone", length = 15)
private String fone;
@Column(name = "celular", length = 15)
private String celular;
@Column(name = "celular2", length = 15)
private String celular2;
@Column(name = "escola", length = 50)
private String escola;
@Column(name = "serie", length = 50)
private String serie;
@Column(name = "horario", length = 50)
private String horario;
@Column(name = "responsavel", length = 50, nullable = false)
private String responsavel;
@NotEmpty(message = "O campo Parentesco é obrigatório.")
@Column(name = "parentesco", length = 50, nullable = false)
private String parentesco;
@Column(name = "docresponsavel", length = 13, nullable = false)
private String documentoResponsavel;
@NotEmpty(message = "O campo Responsável Preenchimento é obrigatório.")
@Column(name = "respreenchimento", length = 50, nullable = false)
private String responsavelPreenchimento;
OBS: aguardo retorno ancioso....