I want to generate a pdf report with jasper ireport and java but I always have this exception :
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: cniEmetteur. ... ...
Caused by: java.lang.NoSuchMethodException: Unknown property 'cniEmetteur'
Here is a part of my jrxml file :
<property name="ireport.zoom" value="1.5"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="517"/>
<parameter name="idTrans" class="java.lang.String"/>
<queryString language="SQL">
<![CDATA[]]>
</queryString>
<field name="idTransaction" class="java.lang.Long"/>
<field name="code" class="java.lang.String"/>
<field name="commission" class="java.lang.Double"/>
<field name="dateTransaction" class="java.sql.Timestamp"/>
<field name="emetteur" class="sn.groupeidyal.comparateur.persistence.Emetteur">
</field>
<field name="cniEmetteur" class="java.lang.String"/>
<field name="nomEmetteur" class="java.lang.String"/>
<field name="numTelEmetteur" class="java.lang.String"/>
<field name="prenomEmetteur" class="java.lang.String"/>
<field name="recepteur" class="sn.groupeidyal.comparateur.persistence.Recepteur">
</field>
<field name="cniRecepteur" class="java.lang.String"/>
<field name="nomDestinataire" class="java.lang.String"/>
<field name="numTelDestinataire" class="java.lang.String"/>
<field name="prenomDestinataire" class="java.lang.String"/>
<field name="montant" class="java.lang.Double"/>
<field name="idPartenaire" class="java.lang.Long"/>
<field name="loginAgentEmetteur" class="java.lang.String"/>
...
Here is my Java code :
public static void main(String[] args) {
JasperPrint jasperPrint = null;
ArrayList<Transaction> ts = new ArrayList<Transaction>();
ts.add(new Transaction());
JRBeanCollectionDataSource beanCollectionDataSource = new
JRBeanCollectionDataSource(ts);
try {
JasperCompileManager.compileReportToFile("recu.jrxml");
jasperPrint = JasperFillManager.fillReport("recu.jasper",
null, beanCollectionDataSource);
JasperViewer jasperViewer = new JasperViewer(jasperPrint);
jasperViewer.setVisible(true);
JasperExportManager.exportReportToPdfFile(jasperPrint,"C:\\recu.pdf");
} catch (JRException ex) {
}
}
My Entity transaction is here :
@Entity
@Table(name = "transaction")
public class Transaction implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id_transaction")
private Long idTransaction;
@Column(name = "code")
private String code;
@Column(name = "date_transaction")
@Temporal(TemporalType.DATE)
private Date dateTransaction;
@Column(name = "login_agent_emetteur")
private String loginAgentEmetteur;
@Column(name = "montant")
private Double montant;
@Column(name = "commission")
private Double commission;
@Embedded
private Emetteur emetteur;
@Embedded
private Recepteur recepteur;
}
In my class Emetteur I have field like cniEmetteur, nomEmetteur, prenomEmetteur, numTelEmetteur and in Recepteur class I have nomDestinataire, prenomDestinataire, cniRecepteur and numTelDestinataire.
I think that my problem is in my jrxml file. How to bind fields emetteur and cniEmetteur.
You can access a field inside other field by using dot. Change cniEmetteur
to emetteur.cniEmetteur
and so on.