Retorno de List de Objetos para Laço FOR

Ola Pessoal

Estou com problemas para retornar um List de objetos que vem de com query para um laço de repetição FOR.
Criei um método para pegar a consulta e estou usando este metodo na minha calsse, porem apresenta o erro “e cannot be resolved to a variable”
segue abaixo meu método e a classe principal que utiliza o método.
Se alguem puder me ajudar agradeço. Abraços a todos
identar texto pré-formatado por 4 espaços

import entidades.Clientes;

public class ClienteServico {

private EntityManagerFactory emf = Persistence.createEntityManagerFactory("ERSCheff");
private EntityManager em;

public void createEntityManager() {
	em = emf.createEntityManager();
}

public void salvar(Clientes cliente) {
	em.getTransaction().begin();
	em.persist(cliente);
	em.getTransaction().commit();
}

public Clientes atualizar(Clientes cliente) {
	em.getTransaction().begin();
	cliente = em.merge(cliente);
	em.getTransaction().commit();

	return cliente;
}

public List<Clientes> getAllClientes() {

	List<Clientes> listaCli;

	listaCli = em.createNativeQuery("Select e.A1_COD, e.A1_NOME From SA1 e").getResultList();
	return (listaCli);
}

public Clientes getClienteById(int id) {
	return em.find(Clientes.class, id);
}

public void remover(Clientes cliente) {
	em.getTransaction().begin();
	cliente = em.merge(cliente);
	em.remove(cliente);
	em.getTransaction().commit();
}

public void closeEntityManager() {
	em.close();
}

}

O erro é apresentado quando eu executo o trecho abaixo no momento de fazer o FOR

		ClienteServico servico = new ClienteServico();
		servico.createEntityManager();

		servico.getAllClientes();
		List<Clientes> customer = servico.getAllClientes();

		for (Clientes c : customer) { //O ERRO É APRESENTADO AQUI !!!
			JOptionPane.showMessageDialog(null, "Teste "+c.getA1_COD(), "Mensagem",
					JOptionPane.INFORMATION_MESSAGE);
		}

Tente implementar a lista primeiro: List<Clientes> customer = new ArrayList<>(); já que List<E> é uma interface e portanto deve ser implementada por uma classe.

Que erro? Tem certeza de que seu método getAllClientes não está retornando null?
E porque você chama esse método duas vezes?

Não faz o menor sentido instanciar uma lista vazia sendo que o método dele já vai retornar a lista de clientes. Estará somente desperdiçando processador e memória.

Isto não devolve uma List<Client> mas sim uma List<Object[]>. Ao tentar obter o Client no for vai dar erro.

Ola
Mesmo implementando conforme vc passou o erro persiste. Ljava.lang.Object; cannot be cast entidades.clientes.
Quando entra no laço FOR o erro aparece.

pmlm . Muito Obrigado

Matou a charada !!! A consulta devolve realmente um list agrora tenho que transformar isso para minha classe Clientes para que eu possa acionar os métodos e pagar os valores.

Valeu pela Ajuda.

Como o @staroski disse falei bobagem… naquele caso o List<Clientes> é só o tipo, já que o método retorna uma lista. Tu está usando o Hibernate? Se for esse método retorna uma lista de objetos, como pode ser visto aqui: Native SQL Queries.

De acordo com o link o tipo da lista deveria ser de Object:

List<Object[]> listaCli;

No for:

int i = 0;
for(Object[] c : listaCli) {

	JOptionPane.showMessageDialog(null, "Teste "+c[i++].getA1_COD(), "Mensagem",
					JOptionPane.INFORMATION_MESSAGE);
}

Dá uma espiada no link…