Amigos,
estou seguindo a apostila da Caelum e estou tendo um erro em no Dao, exatamente este método
public List<T> listaTudo() {
return this.session.createCriteria(T.class).list();
}
O erro que ocorre é
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Illegal class literal for the type parameter T
at br.com.asd.portal.dao.Dao.listaTudo(Dao.java:29)
at br.com.asd.portal.main.TestaUsuario.main(TestaUsuario.java:26)
Que erro é este? Como fazer funcionar?
Agradeço desde já.
ajfilho
#2
Mostre o código da sua declaração de classe…
Abraços!
Oi,
Obrigado pela ajuda.
Aqui esta a classe inteira.
package br.com.asd.portal.dao;
import java.util.List;
import org.hibernate.Session;
public class Dao {
private final Session session;
private final Class classe;
Dao(Session session, Class classe) {
this.session = session;
this.classe = classe;
}
public void adiciona(T u) {
this.session.save(u);
}
public void remove(T u) {
this.session.delete(u);
}
public void atualiza(T u) {
this.session.merge(u);
}
public List<T> listaTudo() {
return this.session.createCriteria(T.class).list();
}
public T procura(Long id) {
return (T) session.load(T.class, id);
}
}
zoren
#4
qual é o level de compilação do IDE que vc usa??
consegue usar em outra classe??
Generics só funciona no Java 1.5 ou +
O seu problema está aqui
return this.session.createCriteria(T.class).list();
Você não pode fazer T.class, generics não aceita isso. Você deve utilizar aquele classe que você está pegando como parâmetro:
return this.session.createCriteria(classe).list();
Pessoal,
valeu pela ajuda.
Gerson,
é isso aí, alterei como voce falou e funcionou direitinho.
Obrigado
Mannes
#7
Já que funcionou, coloque como post resolvido, para organizar e ajudar a outros com a mesma dúvida…
Aqui está.
A classe que funcionou ficou assim:
package br.com.asd.portal.dao;
import java.util.List;
import org.hibernate.Session;
public class Dao {
private final Session session;
private final Class classe;
Dao(Session session, Class classe) {
this.session = session;
this.classe = classe;
}
public void adiciona(T u) {
this.session.save(u);
}
public void remove(T u) {
this.session.delete(u);
}
public void atualiza(T u) {
this.session.merge(u);
}
public List<T> listaTudo() {
return this.session.createCriteria(classe).list();
}
public T procura(Long id) {
return (T) session.load(classe, id);
}
}