我的问题是我正在使用hibernate createsqlquery从数据库中获取数据
从此我得到一个列表og对象数组,如
List<Object[]> listdata = createsqlquery(query).list;
现在我必须在jasper中使用这个listdata来生成pdf。
我该怎么做
请帮助
答案 0 :(得分:1)
尝试以下操作,希望有所帮助。
创建一个bean来保存来自hibernate的返回数据
比如说 MyBean.java
public class MyBean implements Serializable
{
private Integer id;
private String fname;
private String lname;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
}
现在使用 MyBean 来保存数据并使用它来填写报告,如下所示
List<MyBean> listdata = createsqlquery(query).list;
JasperDesign jasperDesign = JasperManager.loadXmlDesign(reportStream);
JasperReport jasperReport = JasperManager.compileReport(jasperDesign);
JRBeanCollectionDataSource ds = ;//your list here
JasperPrint jasperPrint = JasperManager.fillReport(jasperReport,parameters,new JRBeanCollectionDataSource(listdata));
//You can export generated report as follows
JasperExportManager.exportReportToPdfFile(jasperPrint,pathToExport);
注意:您需要为hibernate MyBean.java 进行映射。
答案 1 :(得分:0)
将您的List<Object[]>
(由查询返回)转换为List<SomeBean>
,然后使用JRBeanCollectionDataSource。
对于报表的每个字段,您需要在bean中使用相应的getter。例如,字段$F{firstName}
将调用bean的方法getFirstName()
。
答案 2 :(得分:0)
试试这个:
List<Object[]> listdata = createsqlquery(query).list;
JasperDesign jasperDesign = JasperManager.loadXmlDesign(reportStream);
JasperReport jasperReport = JasperManager.compileReport(jasperDesign);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listdata);//your list here
JasperPrint jasperPrint = JasperManager.fillReport(jasperReport,parameters,ds);
我希望这会有所帮助