List

3 respostas
G

Pessoal, estou tendo um problema e não sei mais como resolver

public class ClienteDAO {

private Session session;

public ClienteDAO() {

// TODO Auto-generated constructor stub

}
public List listar(){
	session = Hibernate_Utility.getSessionFactory().openSession();
	session.beginTransaction();
	List list =  (List)session.createQuery("from cliente").list();
	session.getTransaction().commit();
	return list;
}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

ClienteDAO clienteDAO = new ClienteDAO();				

List listar = clienteDAO.listar();				

for(Cliente cli : [color=red]listar[/color]){

System.out.println(cli.getId_Cliente()+"-"+cli.getNome());

}
}

}

Mensagem de Erro
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Can only iterate over an array or an instance of java.lang.Iterable

at Factory.Principal.main(Principal.java:35)

3 Respostas

LuizAvila

o retorno do listar deve ser uma lista generica:

http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html

http://www.developer.com/java/other/article.php/3343771

ou seja:

public List<Cliente> listar(){

fabim

A sua iteracao nao funciona pq a sua lista nao é tipada.

Se sua lista fosse algo como “List list = new ArrayList()” ai sim ele conseguiria iteram em objetos “Cliente”

Visto que vc nao tipou, pode fazer 2 coisas:

for (Object objeto: lista) {
    Cliente cliente = (Cliente) objeto
    //continua logica
}

Ou

Iterator itClientes = lista.iterator();
while (itClientes.hasNext()) {
    Cliente cliente = (Cliente) itClientes.next();
    //continua logica
}
G

Valeu Demais, que deus dobre seu conhecimento

LuizAvila:
o retorno do listar deve ser uma lista generica:

http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html

http://www.developer.com/java/other/article.php/3343771

ou seja:

public List<Cliente> listar(){

Criado 15 de fevereiro de 2009
Ultima resposta 16 de fev. de 2009
Respostas 3
Participantes 3