Boa tarde!
Tô tentando gerar um relatório e no momento que mando gerar ele lança JRException.
Além disso, ele tá sendo feito duas vezes (então lança 2 excessões iguais).
JRException:
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : conta_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:605)
at relatorio.Relatorios.geraRelatorio(Relatorios.java:46)
at relatorio.Relatorios.<init>(Relatorios.java:26)
at controle.ControlePrincipal.actionPerformed(ControlePrincipal.java:70)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NoSuchMethodException: Unknown property 'conta_id' on class 'class modelo.MovimentoFinanceiro'
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)
... 52 more
Classe que gera o relatório:
// ...
public class Relatorios {
public Relatorios(String tipo) {
geraRelatorio(tipo);
}
// Gera relatório
private void geraRelatorio(String tipo) {
DAOMovimentoFinanceiro dao = new DAOMovimentoFinanceiro();
java.util.Date data = new java.util.Date();
List lista;
JRBeanCollectionDataSource jr;
Map parameters;
InputStream is;
JasperPrint print;
if (tipo.equals("Fluxo de Caixa")) {
try {
lista = dao.consultaPorData(data);
jr = new JRBeanCollectionDataSource(lista, false);
parameters = new HashMap();
is = this.getClass().getResourceAsStream("fluxoCaixa.jasper");
print = JasperFillManager.fillReport(is, parameters, jr);
JasperViewer.viewReport(print, false);
} catch (JRException ex) {
ex.printStackTrace();
}
// ...
Método consultarPorData no DAO
public List consultaPorData(Date data){
return getSessao().createCriteria(MovimentoFinanceiro.class)
.add(Restrictions.gt("data", data))
.addOrder(Order.asc("data")).list();
}
Classe MovimentoFinanceiro:
@Entity
public class MovimentoFinanceiro implements Serializable {
private int id;
private String numDocumento, historico;
private Date data;
private BigDecimal valor;
private Conta conta;
private Codigo codigo;
private Obra obra;
private boolean realizado = false;
private String tipo;
private Favorecido favorecido;
/* Getters and Setters */
// ....
@ManyToOne(fetch = FetchType.LAZY)
public Conta getConta() {
return conta;
}
public void setConta(Conta conta) {
this.conta = conta;
}
// ...
}
Classe Conta:
@Entity
public class Conta implements Serializable {
private int conta_id;
private String nome;
private String banco;
private BigDecimal qtdCaixa;
@Id
@GeneratedValue
@Column(name = "id")
public int getId() {
return conta_id;
}
//...