Как я могу добавить данные в отчете Jasper, используя Hibernate - PullRequest
1 голос
/ 23 августа 2011

моя проблема в том, что я использую hibernate createqlquery для извлечения данных из базы данных

, и из этого я получаю массив объектов списка типа, как

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

, теперь я должен использовать эти данные списка вДжаспер для создания PDF.

Как я могу это сделать

Пожалуйста, помогите

Ответы [ 3 ]

1 голос
/ 21 августа 2014

Попробуйте, надеюсь, это поможет.

Создайте bean-компонент для хранения возвращенных данных из спящего режима

Скажите, например, 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);

Примечание: Вам потребуется сопоставление для MyBean.java для спящего режима.

0 голосов
/ 20 августа 2014

Попробуйте:

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

Надеюсь, это поможет

0 голосов
/ 23 августа 2011

Преобразуйте ваш List<Object[]> (возвращаемый запросом) в List<SomeBean>, а затем используйте JRBeanCollectionDataSource .

Для каждого поля вашего отчета вам понадобится соответствующий геттер в вашем бине. Например, поле $F{firstName} будет вызывать метод getFirstName() компонента.

...