JasperReport não faz leitura dos dados

Fiz uma rotina de que irá gerar relatório, consegui finalizar todo layout mas na visualização com os dados do meu objeto tenho seguinte erro “Error retrieving field value from bean: itens.descricao.”
Eu já verifiquei se nome dos campos estão correto e está tudo OK, poderiam me orientar por favor?

Abaixo segue meu código Java e anexado meu report.GuiaANS.jrxml (60,8 KB)

public class GuiaAnsBusiness {
	private String path;

	private String pathToReportPackage;

	public GuiaAnsBusiness() {
		this.path = this.getClass().getClassLoader().getResource("GuiaANS.jrxml").getPath();
		this.pathToReportPackage = this.path;
		System.out.println(path);
	}

	public void imprimir(List<GuiaAns> lista) throws Exception {
		JasperReport report = JasperCompileManager.compileReport(this.getPathToReportPackage());
		JasperPrint print = JasperFillManager.fillReport(report, null, new JRBeanCollectionDataSource(lista));
		JasperExportManager.exportReportToPdfFile(print, "D:/guia_ans.pdf");
	}

	public String getPathToReportPackage() {
		return this.pathToReportPackage;
	}

	public String getPath() {
		return this.path;
	}

	public static void main(String[] args) {
		try {
			GuiaAns ans = new GuiaAns();
			ItensAns item = new ItensAns();

			List<ItensAns> itens = new ArrayList<>();
			List<GuiaAns> master = new ArrayList<GuiaAns>();

			ans.setRegistroAns(Long.toString(new Date().getTime()));
			ans.setNumeroGuia("123456789012");
			ans.setNumeroCarteira("3253587687618762");
			ans.setNomeBeneficiario("Matheus Eduardo");
			ans.setCodigoOperadora("888.888.888-45");
			ans.setNomeContratado("Dr. Pedro Augusto");
			ans.setConselhoProfissional("PRFDS");
			ans.setNumeroConselho("112233445566778");
			ans.setUfConselho("PR");
			ans.setAtendimentoRN("S");
			ans.setCodigoCBO("123456");
			ans.setCaraterAtendimento("8");
			item.setCodigo(1);
			item.setDescricao("Consulta Padrão");
			itens.add(item);
			ans.setItens(itens);
			master.add(ans);

			GuiaAnsBusiness relatorio = new GuiaAnsBusiness();
			relatorio.imprimir(master);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

	}
}

A única mensagem de erro é esta

Geralmente ela vem acompanhada de mais linhas de explicação, normalmente começadas em At…

Olá Darlan, blz?

Único retorno são esses que está abaixo:

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: itens.descricao.
[itens.descricao]
java.lang.NoSuchMethodException: Unknown property 'descricao' on class 'class java.util.ArrayList'
java.lang.NoSuchMethodException: Unknown property 'descricao' on class 'class java.util.ArrayList'
Unknown property 'descricao' on class 'class java.util.ArrayList'

org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.
data.bean.field.value.not.retrieved
org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.

Cara, o problema é que você está enviando uma lista chamada itens (que provavelmente seja a coleção de objetos de Item) e está tentando referenciar um atributo chamado descricao que não existe na interface java.util.List e nem na implementação, a classe concreta, java.util.ArrayList.
Mostra como está o código que você cria o relatório.

Coloquei apenas uma parte porque é grande e não esta aceitando código inteiro.

	<field name="registroAns" class="java.lang.String"/>
	<field name="itens.descricao" class="java.util.ArrayList"/>
	<background>
		<band splitType="Stretch"/>
	</background>
	<detail>
		<band height="64">
			<staticText>
				<reportElement positionType="FixRelativeToBottom" stretchType="RelativeToBandHeight" x="4" y="13" width="25" height="11" uuid="b12034c2-e87d-4b73-aa7e-8f5491657257"/>
				<textElement>
					<font size="8"/>
				</textElement>
				<text><![CDATA[2 - ]]></text>
			</staticText>
			<staticText>
				<reportElement positionType="FixRelativeToBottom" stretchType="RelativeToBandHeight" x="4" y="26" width="25" height="11" uuid="fd54f66e-a985-4891-a854-593f31ee5a9f"/>
				<textElement>
					<font size="8"/>
				</textElement>
				<text><![CDATA[3 - ]]></text>
			</staticText>
			<staticText>
				<reportElement positionType="FixRelativeToBottom" stretchType="RelativeToBandHeight" x="4" y="52" width="25" height="11" uuid="aa8133a7-5fb2-43b8-bcae-864662c8eea7"/>
				<textElement>
					<font size="8"/>
				</textElement>
				<text><![CDATA[5 - ]]></text>
			</staticText>
			<staticText>
				<reportElement positionType="FixRelativeToBottom" stretchType="RelativeToBandHeight" x="4" y="39" width="25" height="11" uuid="651381ba-5e2f-415d-a379-cded0de1da5b"/>
				<textElement>
					<font size="8"/>
				</textElement>
				<text><![CDATA[4 - ]]></text>
			</staticText>
			<textField>
				<reportElement mode="Opaque" x="229" y="0" width="388" height="13" backcolor="#EB4542" uuid="8aae24b6-fde1-47c0-8e2b-ea13459b9d70">
					<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="a04944fb-9ed2-47cb-8239-d5660dd8d859"/>
				</reportElement>
				<textFieldExpression><![CDATA[$F{itens.descricao}]]></textFieldExpression>
			</textField>
			<staticText>
				<reportElement positionType="FixRelativeToBottom" stretchType="RelativeToBandHeight" x="4" y="0" width="25" height="11" uuid="320d4ca9-0eb2-460c-845e-ea264b12cb57"/>
				<textElement>
					<font size="8"/>
				</textElement>
				<text><![CDATA[1 - ]]></text>
			</staticText>
		</band>
	</detail>

E o código java?

Oi Darlan blz?

Não entendi o codigo java que eu tenho é apenas o que esta na primeira publicação.
Seria isso?

Não, seria o código referente a classe GuiaAns

public class GuiaAns {
	private String registroAns;
	private String numeroGuia;
	private String numeroCarteira;
	private String nomeBeneficiario;
	private String codigoOperadora;
	private String nomeContratado;
	private String conselhoProfissional;
	private String numeroConselho;
	private String ufConselho;
	private String atendimentoRN;
	private String codigoCBO;
	private String caraterAtendimento;
    private List<ItensAns> itens;
	
	
	//Get/set ....
}

public class ItensAns {
    private int codigo;
    private String descricao;
     //....    
}

Acabei esquecendo de publicar as classes!

Isso aqui está errado, pois a classe ArrayList não possui um atributo chamado descricao.

Posta o código do XML a partir da linha onde você itera os itens.

Agora entende o que eu estava falando? Você nunca vai conseguir acessar a propriedade descricao do objeto itens pelo simples fato de que ele é um java.util.List e esta interfce não possui tal método.
Você vai precisar criar um sub relatório ou algo assim para colocar as informações destes itens no teu relatório.

Entendi ± eu estava lendo sobre o sub-report faz sentido isso achei que dava para resolver tudo apenas um report assim que chegar em casa irei testar essa ideia e publico aqui se deu certo.

Tks cara!!!

E ai cara beleza?

Então XML do report está anexado ao tópico e data-source eu faço em tempo de execução conforme código acima.
Como mencionado abaixo como é um “master details” acredito que será necessário um sub-report.

Abs