如何使用hibernate在jasper报告中添加数据

时间:2011-08-23 11:36:21

标签: java hibernate jasper-reports report

我的问题是我正在使用hibernate createsqlquery从数据库中获取数据

从此我得到一个列表og对象数组,如

List<Object[]> listdata = createsqlquery(query).list;

现在我必须在jasper中使用这个listdata来生成pdf。

我该怎么做

请帮助

3 个答案:

答案 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);

我希望这会有所帮助