2011-12-27 18 views
5

mam hibernacji POJO z 1.an jeden-do-jednego stowarzyszenia do innego obiektu 2.one do wielu związku (kolekcja) z innego obiektuPrzepuścić POJO do Podraport Jasper Reports

I próbuję utworzyć raport Jaspera z tymi powiązaniami przechodząc do podraportów. Dla wielu do jednego stowarzyszenia ja minięciu źródła danych w następujący sposób:

<subreport> 
<reportElement x="40" y="16" width="100" height="30"/> 
<dataSourceExpression> 
    <![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{phones})]]> 
</dataSourceExpression> 
<subreportExpression> 
    <![CDATA[$P{SUBREPORT_DIR} + "subreport1.jasper"]]> 
</subreportExpression> 
</subreport> 

To działa prawidłowo. I tutaj jest sposób, w jaki zdefiniowałem to dla jedno-do-jednego stowarzyszenia

<subreport> 
<reportElement x="25" y="91" width="200" height="59"/> 
<dataSourceExpression> 
    <![CDATA[new net.sf.jasperreports.engine.data.JRBeanArrayDataSource([$F{batchHeaderRecord}] as java.lang.Object[])]]> 
</dataSourceExpression> 
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "batchHeaderReport.jasper"]]> 
</subreportExpression> 
</subreport> 

Ale ten nie działa. Czy ktoś może mi powiedzieć, gdzie idę źle?

+0

Co to jest typ pola '$ F {batchHeaderRecord}'? –

Odpowiedz

5
new net.sf.jasperreports.engine.data.JRBeanArrayDataSource([$F{batchHeaderRecord}] as java.lang.Object[]) 

nie jest prawidłowym kodem Java. Wystarczy użyć

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Collections.singleton($F{batchHeaderRecord})) 

lub

new net.sf.jasperreports.engine.data.JRBeanArrayDataSource(new Object[] {$F{batchHeaderRecord}}) 
+0

Dzięki .. Wynajmij je. JRBeanCollectionDataSource działa poprawnie. Ale przy użyciu JRBeanArrayDataSource pojawia się następujący błąd: net.sf.jasperreports.engine.JRException: Napotkano błędy podczas kompilowania pliku klas wyrażeń raportu: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: calculator_tdsSample_1325043312140_397478: 187: Brak wyrażenia dla wywołanie konstruktora tablicowego w linii: 187 kolumna: 91. Plik: calculator_tdsSample_1325043312140_397478 @ line 187, kolumna 91 – PrasanthNath

+0

Witam, Mam do czynienia z tym samym problemem. ale z innym scenariuszem. Próbuję wyświetlić listę w tabeli, ale moja lista ma jeden do jednego relacji z innym podmiotem, takim jak MemberList, mają jeden do jednego relacji z pracownikami Chcę wyświetlić Member_ID | Employee.FullName | w tej samej tabeli. Proszę o pomoc –

1

Set language do Java do raportu naprawić Groovy błąd.