Relatorio + ArrayList + TableModel

Boa tarde!
Tenho algumas duvidas com relação ao IReport/Jasper
Estou desenvolvendo as partes derelatorios da aplicação
Estou utilizando Hibernate +JPA (Annotations) + Postgre
Vamos la:
Fiz um table model personalizado para cada tabela do meu Banco de Dados…
Portanto faço a filtragem pelo TableModel, com consultas via HQL,
quero pegar a ArrayList que esta atualmente e joga-lo no Jasper…
to batalhando a 1 semana,
e nada da certo…
e a maioria sao objetos compostos, ou seja, Classe pessoa tem uma classe Endereco…
Pelo JRBean nao estou conseguindo jogar os dados,
Alguem tem um tutorial ou sabe como resolver este Problema

qual o erro? cola aqui.

Normalmente o TableModel não deve ser responsavel por filtrar seus dados, e sim exibir o que contem na sua lista. Desse modo, voce pegar os itens atuais vai ser simplesmente um “model.getData()”

Olá Marky,
então, como nao tenho os DAOs personalizados,apenas um generico,resolvi implementar as consultas via HQL dentro do table model e este
ja tem um metodo que retorna todos os itens presentes na Table Model, mas nao sei como implementar esse tipo de relatório dentro do Ireport:
eis a minha classe que utilizo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sga.hibernate.mapeamento;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Juan Perondi
 */
@Entity
@GenericGenerator(name="generator", strategy="increment", parameters = { })
@Table(name = "fita_video")
@NamedQueries({
    @NamedQuery(name = "FitaVideo.findAll", query = "SELECT f FROM FitaVideo f"),
    @NamedQuery(name = "FitaVideo.findByCodMidia", query = "SELECT f FROM FitaVideo f WHERE f.codMidia = :codMidia"),
    @NamedQuery(name = "FitaVideo.findByTitulo", query = "SELECT f FROM FitaVideo f WHERE f.titulo = :titulo"),
    @NamedQuery(name = "FitaVideo.findByDataGravacao", query = "SELECT f FROM FitaVideo f WHERE f.dataGravacao = :dataGravacao"),
    @NamedQuery(name = "FitaVideo.findByPreco", query = "SELECT f FROM FitaVideo f WHERE f.preco = :preco"),
    @NamedQuery(name = "FitaVideo.findByDuracao", query = "SELECT f FROM FitaVideo f WHERE f.duracao = :duracao"),
    @NamedQuery(name = "FitaVideo.findByConteudo", query = "SELECT f FROM FitaVideo f WHERE f.conteudo = :conteudo")})
public class FitaVideo implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO, generator="generator")
    @Basic(optional = false)
    @Column(name = "cod_midia")
    private Integer codMidia;
    @Column(name = "titulo")
    private String titulo;
    @Column(name = "data_gravacao")
    @Temporal(TemporalType.DATE)
    private Date dataGravacao;
    @Column(name = "preco")
    private String preco;
    @Column(name = "duracao")
    private String duracao;
    @Column(name = "conteudo")
    private String conteudo;
    @JoinColumn(name = "cod_modogravacao", referencedColumnName = "cod_modogravacao")
    @ManyToOne(optional = false)
    private ModoGravacao modoGravacao;
    @JoinColumn(name = "cod_modoaquisicao", referencedColumnName = "cod_modoaquisicao")
    @ManyToOne(optional = false)
    private ModoAquisicao modoAquisicao;
    @JoinColumn(name = "cod_idioma", referencedColumnName = "cod_idioma")
    @ManyToOne(optional = false)
    private Idioma idioma;
    @JoinColumn(name = "cod_distribuidora", referencedColumnName = "cod_distribuidora")
    @ManyToOne(optional = false)
    private Distribuidora distribuidora;
    @JoinColumn(name = "cod_classificmidia", referencedColumnName = "cod_classificmidia")
    @ManyToOne(optional = false)
    private ClassificMidia classificMidia;

    public FitaVideo() {
    }

    public FitaVideo(Integer codMidia) {
        this.codMidia = codMidia;
    }

    public Integer getCodMidia() {
        return codMidia;
    }

    public void setCodMidia(Integer codMidia) {
        this.codMidia = codMidia;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public Date getDataGravacao() {
        return dataGravacao;
    }

    public void setDataGravacao(Date dataGravacao) {
        this.dataGravacao = dataGravacao;
    }

    public String getPreco() {
        return preco;
    }

    public void setPreco(String preco) {
        this.preco = preco;
    }

    public String getDuracao() {
        return duracao;
    }

    public void setDuracao(String duracao) {
        this.duracao = duracao;
    }

    public String getConteudo() {
        return conteudo;
    }

    public void setConteudo(String conteudo) {
        this.conteudo = conteudo;
    }

    public ModoGravacao getModoGravacao() {
        return modoGravacao;
    }

    public void setModoGravacao(ModoGravacao modoGravacao) {
        this.modoGravacao = modoGravacao;
    }

    public ModoAquisicao getModoAquisicao() {
        return modoAquisicao;
    }

    public void setModoAquisicao(ModoAquisicao modoAquisicao) {
        this.modoAquisicao = modoAquisicao;
    }

    public Idioma getIdioma() {
        return idioma;
    }

    public void setIdioma(Idioma idioma) {
        this.idioma = idioma;
    }

    public Distribuidora getDistribuidora() {
        return distribuidora;
    }

    public void setDistribuidora(Distribuidora distribuidora) {
        this.distribuidora = distribuidora;
    }

    public ClassificMidia getClassificMidia() {
        return classificMidia;
    }

    public void setClassificMidia(ClassificMidia classificMidia) {
        this.classificMidia = classificMidia;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codMidia != null ? codMidia.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof FitaVideo)) {
            return false;
        }
        FitaVideo other = (FitaVideo) object;
        if ((this.codMidia == null && other.codMidia != null) || (this.codMidia != null && !this.codMidia.equals(other.codMidia))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return this.titulo;
    }

}

eis meu XML:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
	<background>
		<band/>
	</background>
	<title>
		<band height="85">
			<staticText>
				<reportElement x="0" y="1" width="802" height="77"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font size="30"/>
				</textElement>
				<text><![CDATA[Mídias]]></text>
			</staticText>
			<line>
				<reportElement x="0" y="0" width="802" height="1"/>
			</line>
			<line>
				<reportElement x="0" y="78" width="802" height="1"/>
			</line>
		</band>
	</title>
	<pageHeader>
		<band/>
	</pageHeader>
	<columnHeader>
		<band height="18">
			<staticText>
				<reportElement mode="Opaque" x="55" y="0" width="161" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Título]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="216" y="0" width="161" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Conteúdo]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="377" y="0" width="40" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Data]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="455" y="0" width="39" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Duração]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="723" y="0" width="79" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Classificação]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="670" y="0" width="53" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Idioma]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="610" y="0" width="60" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Gravação]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="562" y="0" width="48" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Aquisição]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="494" y="0" width="68" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Distribuidora]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="0" y="0" width="55" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Código]]></text>
			</staticText>
			<staticText>
				<reportElement mode="Opaque" x="417" y="0" width="38" height="16" backcolor="#CCCCFF"/>
				<box>
					<topPen lineWidth="0.5"/>
					<leftPen lineWidth="0.5"/>
					<bottomPen lineWidth="0.5"/>
					<rightPen lineWidth="0.5"/>
				</box>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="Times New Roman" size="10"/>
				</textElement>
				<text><![CDATA[Preço]]></text>
			</staticText>
		</band>
	</columnHeader>
	<detail>
		<band height="20">
			<textField>
				<reportElement x="0" y="0" width="55" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.Integer"><![CDATA[$F{codMidia}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="55" y="-20" width="161" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{field}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="55" y="0" width="161" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{titulo}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="417" y="-1" width="38" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{preco}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="456" y="0" width="38" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{duracao}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="494" y="0" width="68" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{distribuidora}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="562" y="0" width="48" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{modoAquisicao}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="610" y="0" width="60" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{modoGravacao}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="670" y="0" width="53" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{idioma}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="723" y="0" width="79" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{classificMidia}]]></textFieldExpression>
			</textField>
		</band>
	</detail>
	<columnFooter>
		<band/>
	</columnFooter>
	<pageFooter>
		<band height="25">
			<textField>
				<reportElement x="216" y="-20" width="161" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{conteudo}]]></textFieldExpression>
			</textField>
			<textField pattern="dd/MM/yyyy">
				<reportElement x="377" y="-20" width="40" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[$F{dataGravacao}]]></textFieldExpression>
			</textField>
			<textField pattern="dd/MM/yyyy HH.mm.ss">
				<reportElement x="0" y="0" width="100" height="20"/>
				<textElement/>
				<textFieldExpression class="java.util.Date"><![CDATA[new java.util.Date()]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="562" y="0" width="199" height="20"/>
				<textElement textAlignment="Right"/>
				<textFieldExpression class="java.lang.String"><![CDATA["Pagina "+$V{PAGE_NUMBER}+" de"]]></textFieldExpression>
			</textField>
			<textField evaluationTime="Report">
				<reportElement x="761" y="0" width="40" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
			</textField>
		</band>
	</pageFooter>
	<summary>
		<band/>
	</summary>
</jasperReport>

Onde chamo o relatorio com a Arraylist ja preenchida:

JasperReport jasperReport;
        JasperPrint jasperPrint;
        JasperViewer jasperViewer;
        ArrayList<FitaVideo> list = (ArrayList<FitaVideo>) ((TableModelMidias) this.tabela.getModel()).getAllMidias();
    JRBeanCollectionDataSource jrds = new JRBeanCollectionDataSource(list);
        try {
            jasperReport = JasperCompileManager.compileReport(Thread.currentThread().getContextClassLoader().getResourceAsStream("sga/Relatórios/Filter/Midia_Report.jrxml"));
            jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), jrds);
            jasperViewer = new JasperViewer(jasperPrint, false);
            jasperViewer.setDefaultCloseOperation(JasperViewer.DISPOSE_ON_CLOSE);
        } catch (JRException ex) {
            Logger.getLogger(Report_Mídia_Viewer.class.getName()).log(Level.SEVERE, null, ex);
        }

eis o erro:

22/03/2011 15:09:42 sga.Relatórios.Filter.Report_Mídia_Viewer buttonVisualizarPDFActionPerformed
SEVERE: null
net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 
         1. Field not found : getCodMidia()
         2. Field not found : field
         3. Field not found : titulo
         4. Field not found : preco
         5. Field not found : duracao
         6. Field not found : distribuidora
         7. Field not found : modoAquisicao
         8. Field not found : modoGravacao
         9. Field not found : idioma
         10. Field not found : classificMidia
         11. Field not found : conteudo
         12. Field not found : dataGravacao
        at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:262)
        at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:144)
        at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:219)
        at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:205)
        at sga.Relatórios.Filter.Report_Mídia_Viewer.buttonVisualizarPDFActionPerformed(Report_Mídia_Viewer.java:337)
        at sga.Relatórios.Filter.Report_Mídia_Viewer.access$700(Report_Mídia_Viewer.java:35)
        at sga.Relatórios.Filter.Report_Mídia_Viewer$8.actionPerformed(Report_Mídia_Viewer.java:220)
        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.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        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:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
        at java.awt.Dialog$1.run(Dialog.java:1045)
        at java.awt.Dialog$3.run(Dialog.java:1097)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1095)
        at java.awt.Component.show(Component.java:1563)
        at java.awt.Component.setVisible(Component.java:1515)
        at java.awt.Window.setVisible(Window.java:841)
        at java.awt.Dialog.setVisible(Dialog.java:985)
        at sga.Relatórios.Filter.Report_Mídia_Viewer$9.run(Report_Mídia_Viewer.java:361)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        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)

é a primeira vez que trabvalho com IREPORT e Jasper…
alguem poderia meajudar?