bls61793 Posted May 1, 2017 Share Posted May 1, 2017 Hello everyone, this is my first time posting here. I have a jasper report template jrxml that I am trying to fill with the information from a specific JavaBean class. This class doubles as an entity for the Java Persistence API (JPA ) and thus maps directly to a database. Here is my Bean class: package main.java.gls.entities; import main.java.gls.entities.util.JobAmount; import java.io.Serializable; import java.math.BigDecimal; import java.util.Collection; import java.util.Date; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @Table(name = "job") @NamedQueries( { @NamedQuery(name = "Job.findAll", query = "SELECT j FROM Job j"), @NamedQuery(name = "Job.findByJobNum", query = "SELECT j FROM Job j WHERE j.JobPK.jobNum = :jobNum"), @NamedQuery(name = "Job.findByRev", query = "SELECT j FROM Job j WHERE j.JobPK.rev = :rev"), @NamedQuery(name = "Job.findByLastUpd", query = "SELECT j FROM Job j WHERE j.lastUpd = :lastUpd"), @NamedQuery(name = "Job.findByFCompDate", query = "SELECT j FROM Job j WHERE j.fCompDate = :fCompDate"), @NamedQuery(name = "Job.findByCCompDate", query = "SELECT j FROM Job j WHERE j.cCompDate = :cCompDate"), @NamedQuery(name = "Job.findByEntDate", query = "SELECT j FROM Job j WHERE j.entDate = :entDate"), @NamedQuery(name = "Job.findByFieldDate", query = "SELECT j FROM Job j WHERE j.fieldDate = :fieldDate"), @NamedQuery(name = "Job.findByFinDate", query = "SELECT j FROM Job j WHERE j.finDate = :finDate"), @NamedQuery(name = "Job.findByDueDate", query = "SELECT j FROM Job j WHERE j.dueDate = :dueDate"), @NamedQuery(name = "Job.findByJobIsRush", query = "SELECT j FROM Job j WHERE j.jobIsRush = :jobIsRush"), @NamedQuery(name = "Job.findByComRes", query = "SELECT j FROM Job j WHERE j.comRes = :comRes"), @NamedQuery(name = "Job.findByPltBk", query = "SELECT j FROM Job j WHERE j.pltBk = :pltBk"), @NamedQuery(name = "Job.findByPltPg", query = "SELECT j FROM Job j WHERE j.pltPg = :pltPg"), @NamedQuery(name = "Job.findByDeedBk", query = "SELECT j FROM Job j WHERE j.deedBk = :deedBk"), @NamedQuery(name = "Job.findByDeedPg", query = "SELECT j FROM Job j WHERE j.deedPg = :deedPg"), @NamedQuery(name = "Job.findByLandLot", query = "SELECT j FROM Job j WHERE j.landLot = :landLot"), @NamedQuery(name = "Job.findByDistrict", query = "SELECT j FROM Job j WHERE j.district = :district"), @NamedQuery(name = "Job.findBySection", query = "SELECT j FROM Job j WHERE j.section = :section"), @NamedQuery(name = "Job.findByLot", query = "SELECT j FROM Job j WHERE j.lot = :lot"), @NamedQuery(name = "Job.findByBlock", query = "SELECT j FROM Job j WHERE j.block = :block"), @NamedQuery(name = "Job.findByUnit", query = "SELECT j FROM Job j WHERE j.unit = :unit"), @NamedQuery(name = "Job.findByPhase", query = "SELECT j FROM Job j WHERE j.phase = :phase"), @NamedQuery(name = "Job.findBySubDiv", query = "SELECT j FROM Job j WHERE j.subDiv = :subDiv"), @NamedQuery(name = "Job.findBySubSec", query = "SELECT j FROM Job j WHERE j.subSec = :subSec"), @NamedQuery(name = "Job.findByParIdNum", query = "SELECT j FROM Job j WHERE j.parIdNum = :parIdNum"), @NamedQuery(name = "Job.findByStreetNum", query = "SELECT j FROM Job j WHERE j.streetNum = :streetNum"), @NamedQuery(name = "Job.findByStreetNumAlt", query = "SELECT j FROM Job j WHERE j.streetNumAlt = :streetNumAlt"), @NamedQuery(name = "Job.findByStreetName", query = "SELECT j FROM Job j WHERE j.streetName = :streetName"), @NamedQuery(name = "Job.findByCity", query = "SELECT j FROM Job j WHERE j.city = :city"), @NamedQuery(name = "Job.findByState", query = "SELECT j FROM Job j WHERE j.state = :state"), @NamedQuery(name = "Job.findByZipCode", query = "SELECT j FROM Job j WHERE j.zipCode = :zipCode"), @NamedQuery(name = "Job.findByOrderDate", query = "SELECT j FROM Job j WHERE j.orderDate = :orderDate"), @NamedQuery(name = "Job.findByAmtBill", query = "SELECT j FROM Job j WHERE j.amtBill = :amtBill"), @NamedQuery(name = "Job.findByAmtPaid", query = "SELECT j FROM Job j WHERE j.amtPaid = :amtPaid"), @NamedQuery(name = "Job.findByOldClientNum", query = "SELECT j FROM Job j WHERE j.oldClientNum = :oldClientNum"), @NamedQuery(name = "Job.findByOldClientAlpha", query = "SELECT j FROM Job j WHERE j.oldClientAlpha = :oldClientAlpha"), @NamedQuery(name = "Job.findByChkSum", query = "SELECT j FROM Job j WHERE j.chkSum = :chkSum") }) public class Job implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId protected JobPK JobPK; @Column(name = "AddInfo") private String addInfo; public Job () { } public Job ( JobPK jobPK ) { this.JobPK = jobPK; } public Job ( int jobNum, int rev ) { this.JobPK = new JobPK(jobNum, rev); } public JobPK getJobPK () { return JobPK; } public void setJobPK ( JobPK jobPK ) { this.JobPK = jobPK; } public String getAddInfo () { return addInfo; } public void setAddInfo ( String addInfo ) { this.addInfo = addInfo; } @Override public int hashCode () { int hash = 0; hash += (JobPK != null ? JobPK.hashCode() : 0); return hash; } @Override public boolean equals ( Object object ) { // TODO: Warning - this method won't work in the case the id fields are not set if ( !(object instanceof Job) ) { return false; } Job other = ( Job ) object; if ( ( this.JobPK == null && other.JobPK != null ) || ( this.JobPK != null && !this.JobPK.equals(other.JobPK) ) ) { return false; } return true; } @Override public String toString () { return "gls.entities.Job[ JobPK=" + JobPK + " ]"; } public boolean hasBalance(){ if (getAmtDue().equals(JobAmount.zero)){ return false; } else { return true; } } //total amount of applied payments. public BigDecimal getAmtApplied() { return JobAmount.getAmountApplied(this); } //amount billed minus amount applied. public BigDecimal getAmtDue() { return JobAmount.getAmountDue(this); } } My JRXML looks like this: <?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1 --><!-- 2017-05-01T09:16:14 --><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="testInvoice_2" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="4eedbb89-b4f6-4469-9ab6-f642a1688cf7"> <property name="com.jaspersoft.studio.data.sql.tables" value=""/> <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Test JOB Database"/> <style name="Title" forecolor="#FFFFFF" fontName="Times New Roman" fontSize="50" isBold="false" pdfFontName="Times-Bold"/> <style name="SubTitle" forecolor="#CCCCCC" fontName="Times New Roman" fontSize="18" isBold="false" pdfFontName="Times-Roman"/> <style name="Column header" forecolor="#666666" fontName="Times New Roman" fontSize="14" isBold="true"/> <style name="Detail" mode="Transparent" fontName="Times New Roman"/> <style name="Row" mode="Transparent" fontName="Times New Roman" pdfFontName="Times-Roman"> <conditionalStyle> <conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression> <style mode="Opaque" backcolor="#EEEFF0"/> </conditionalStyle> </style> <style name="Table"> <box> <pen lineWidth="1.0" lineColor="#000000"/> <topPen lineWidth="1.0" lineColor="#000000"/> <leftPen lineWidth="1.0" lineColor="#000000"/> <bottomPen lineWidth="1.0" lineColor="#000000"/> <rightPen lineWidth="1.0" lineColor="#000000"/> </box> </style> <style name="Table_TH" mode="Opaque" backcolor="#FFFFFF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> <topPen lineWidth="0.5" lineColor="#000000"/> <leftPen lineWidth="0.5" lineColor="#000000"/> <bottomPen lineWidth="0.5" lineColor="#000000"/> <rightPen lineWidth="0.5" lineColor="#000000"/> </box> </style> <style name="Table_CH" mode="Opaque" backcolor="#CACED0"> <box> <pen lineWidth="0.5" lineColor="#000000"/> <topPen lineWidth="0.5" lineColor="#000000"/> <leftPen lineWidth="0.5" lineColor="#000000"/> <bottomPen lineWidth="0.5" lineColor="#000000"/> <rightPen lineWidth="0.5" lineColor="#000000"/> </box> </style> <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> <topPen lineWidth="0.5" lineColor="#000000"/> <leftPen lineWidth="0.5" lineColor="#000000"/> <bottomPen lineWidth="0.5" lineColor="#000000"/> <rightPen lineWidth="0.5" lineColor="#000000"/> </box> <conditionalStyle> <conditionExpression><![CDATA[$V{REPORT_COUNT}%2 == 0]]></conditionExpression> <style backcolor="#D8D8D8"/> </conditionalStyle> </style> <field name="addInfo" class="java.lang.String"/> <field name="JobPK" class="main.java.gls.entities.JobPK"> <fieldDescription><![CDATA[JobPK]]></fieldDescription> </field> <columnHeader> <band height="57"> <staticText> <reportElement x="20" y="10" width="100" height="30" uuid="ce227a04-2d3c-41eb-a9a4-f8502249ba54"/> <textElement> <font fontName="SansSerif"/> </textElement> <text><![CDATA[Job Number:]]></text> </staticText> </band> </columnHeader> <detail> <band height="117"> <staticText> <reportElement x="20" y="27" width="100" height="30" uuid="ac395cac-88c5-4702-b0dd-d1cedad753d0"/> <text><![CDATA[Amount Billed:]]></text> </staticText> <staticText> <reportElement stretchType="ContainerBottom" x="23" y="90" width="75" height="20" uuid="5f2f6ac8-32d4-42df-a6fc-d78e0fd6a73a"/> <text><![CDATA[iNFO]]></text> </staticText> </band> </detail> <lastPageFooter> <band height="177"> <staticText> <reportElement positionType="Float" x="-1" y="30" width="261" height="101" uuid="1a0d7088-5af7-4865-8be1-41ec5f51fb36"/> <box> <topPen lineWidth="1.1" lineStyle="Dashed"/> <leftPen lineWidth="1.1" lineStyle="Dashed"/> <bottomPen lineWidth="1.1" lineStyle="Dashed"/> <rightPen lineWidth="1.1" lineStyle="Dashed"/> </box> <text><![CDATA[Your notes here]]></text> </staticText> <staticText> <reportElement positionType="Float" mode="Opaque" x="0" y="147" width="556" height="30" backcolor="#E6E8E9" uuid="36aa233d-4305-48e6-974a-1bbf89bb3c8f"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font fontName="Serif" size="9" isItalic="true"/> </textElement> <text><![CDATA[THANKYOU FOR YOUR BUSINESS]]></text> </staticText> </band> </lastPageFooter></jasperReport> [/code] I saw this post: http://community.jaspersoft.com/questions/527187/nosuchmethodexception-unknown-property and have tried all of the possible solutions that I have found in this and other posts/articles, but I still can't seem to figure out what's going on, whener I run my application I get the following error: Filling report: C:UsersbsniderJaspersoftWorkspaceLisaPro ReportstestInvoice .jasper net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: JobPK. at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProp erty(JRAbstractBeanDataSource.java:193) at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldVal ue(JRAbstractBeanDataSource.java:158) at net.sf.jasperreports.engine.data.JRBeanArrayDataSource.getFieldValue( JRBeanArrayDataSource.java:90) at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDat aset.java:1489) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.jav a:1390) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.jav a:1366) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java: 1085) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVertic alFiller.java:113) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java: 582) at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFill er.java:414) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:121) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager. java:583) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa nager.java:929) at main.java.gls_desktop.jasperreports.JReportFiller.FillReport(JReportF iller.java:82) at main.java.gls_desktop.jasperreports.JReportFiller.FillReport(JReportF iller.java:61) at main.java.gls_desktop.jasperreports.JasperReportsTestFile.<init>(Jasp erReportsTestFile.java:42) at main.java.gls_desktop.jasperreports.AlternateMainJasperReportsTest.ma in(AlternateMainJasperReportsTest.java:15) at main.java.gls_desktop.GLSapp.main(GLSapp.java:132) Caused by: java.lang.NoSuchMethodException: Unknown property 'JobPK' on class 'c lass main.java.gls.entities.Job' at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(Prop ertyUtilsBean.java:1277) at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(Prop ertyUtilsBean.java:808) at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUt ilsBean.java:884) at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils. java:464) at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProp erty(JRAbstractBeanDataSource.java:173) ... 17 more java.lang.NoSuchMethodException: Unknown property 'JobPK' on class 'class main.j ava.gls.entities.Job' Failed To Fill Report java.lang.NullPointerException at net.sf.jasperreports.engine.JasperPrintManager.print(JasperPrintManag er.java:129) at net.sf.jasperreports.engine.JasperPrintManager.printReport(JasperPrin tManager.java:326) at main.java.gls_desktop.jasperreports.JReportPrinter.Print(JReportPrint er.java:49) at main.java.gls_desktop.jasperreports.JasperReportsTestFile.<init>(Jasp erReportsTestFile.java:61) at main.java.gls_desktop.jasperreports.AlternateMainJasperReportsTest.ma in(AlternateMainJasperReportsTest.java:15) at main.java.gls_desktop.GLSapp.main(GLSapp.java:132) Link to comment Share on other sites More sharing options...
narcism Posted May 3, 2017 Share Posted May 3, 2017 You need to use the lowercase property name for the field:<field name="jobPK" class="main.java.gls.entities.JobPK"> <fieldDescription><![CDATA[jobPK]]></fieldDescription></field> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now