Novo erro

14 respostas
Jarf

Olá amigos,
estou com erro na minha classe DAO e na classe principal, mas nao estou sabendo resolver.. alguem poderia me ajudar?

Classe DAO
public class ClienteDAO {
	
	private Session session;
	public ClienteDAO(){
	}
	public void salvar(Cliente cli){
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		session.save(cli);
		session.getTransaction().commit();
	}
	
	public List listar(){
		session = HibernateUtil.getSessionFactory().openSession();
		session.beginTransaction();
		List l1 = session.createQuery("from Cliente").list();
		session.getTransaction().commit();
		return l1;
	}

}
Erro na seguinte linha:
List l1 = session.createQuery("from Cliente").list();
Erro em session.createQuery("from Cliente").list() Classe Principal
public class Principal {
	
	public static void main(String[] args) {
		Cliente c1 = new Cliente();
		c1.setNome(" ");
		c1.setIdade(new Long(20));
		
		Cliente c2 = new Cliente();
		c2.setNome(" ");
		c2.setIdade(new Long(21));
	
		ClienteDAO clienteDAO = new ClienteDAO();
		clienteDAO.salvar(c1);
		clienteDAO.salvar(c2);
		
		List<Cliente> listaClientes = clienteDAO.listar();
		for (Cliente cliente : listaClientes) {
		System.out.println(cliente.getId()+" - "+cliente.getNome());
		}
				
	}
	
	

}
Erro na seguinte linha:
List<Cliente> listaClientes = clienteDAO.listar();
Erro no List

14 Respostas

fiaux

Qual erro?

Jarf
Esse é o erro:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The type List is not generic; it cannot be parameterized with arguments <Cliente>

	at teste.dao.Principal.main(Principal.java:25)

vlw

fiaux

http://www.guj.com.br/java.tutorial.artigo.142.1.guj

Vendo pouco do seu código eu diria:

Altere para:

Ou então ClienteDAO deve retornar:

Jair_Rillo_Junior

No seu DAO, no public List listar(), coloque public List<Cliente> listar().

Outro detalhe que eu notei. Você está fazendo seu controle de transação dentro do DAO, certo? Mas e caso ocorra uma exceção, onde ela será tratada? Onde está o rollback? O ideal é deixar o controle de transação fora do DAO, em uma camada de serviço. (ou então pense na possibilidade de usar o Spring framework para te ajudar no controle de transação). Pesquise aqui no GUJ que isso já foi muito comentado.

Jarf
Então amigos, quando eu faço a alteração como o fiaux explicou ele da o seguinte 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 teste.dao.Principal.main(Principal.java:26)
o erro é em listaClientes da seguinte linha:
for (Cliente cliente : listaClientes) {
Já quando aplico a dica do Jair da o seguinte erro:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The type List is not generic; it cannot be parameterized with arguments <Cliente>
	The method listar() is undefined for the type ClienteDAO

	at teste.dao.Principal.main(Principal.java:25)

e dessa forma continua com mesmo erro e da um erro na linha onde foi indicado para adicionar o .
; /

fiaux

Qual versão de Java você usa?

Jarf

eu uso Eclipse 3.3

Jair_Rillo_Junior

Tudo bem que o Eclipse é o 3.3, mas e a versão do Java ??

Jarf

Eu sou novato em Java :stuck_out_tongue_winking_eye:

SDK?

eh isso? :roll:

se não for, como eu posso ve? :frowning:

fiaux

Isso, qual :?: :?:

Jarf

SDK é a versão? :roll:

ivo_costa

Vai no prompt ou no cmd e digita “java -version”

Jarf

java version "1.6.0_05"
Java™ SE Runtime Environment (build 1.6.0_05-b13)

:wink: Vlw :smiley:

Jarf

Alguem pode me ajudar com esse erro?

Criado 30 de setembro de 2008
Ultima resposta 1 de out. de 2008
Respostas 14
Participantes 4