Pessoal,
Estou tentando fazer uma classe generica para meus DAOS, mas na hora de implementar dá erro, alguem pode me ajudar:
Minha classe generica ficou assim(sem erros):
GenericDAO.java
[code]package br.com.catalogo.dao;
import java.util.List;
import org.hibernate.Session;
public class GenericDAO {
private Class classePersistencia;
protected Session sessao;
public GenericDAO(Session sessao, Class classePersistencia) {
this.sessao = sessao;
this.classePersistencia = classePersistencia;
}
public void Salvar(T t) {
sessao.save(t);
}
public void Apagar(T t) {
sessao.delete(t);
}
public void Atualizar(T t) {
sessao.merge(t);
}
@SuppressWarnings("unchecked")
public T Carregar(int id) {
return (T) sessao.load(classePersistencia, id);
}
@SuppressWarnings("unchecked")
public List Listar() {
return sessao.createCriteria(classePersistencia).list();
}
}
[/code]
Implementando:
UsuarioDAO.java
[code]package br.com.catalogo.dao;
import br.com.catalogo.modelo.Usuario;
public class UsuarioDAO extends GenericDAO {
}
[/code]
Nem continuei a fazer minha classe UsuarioDAO pois ja esta dando erro na declaração da mesma, o netbeans da erro na primeira linha, dizendo que o simbolonao foi achado.
O que estou fazendo de errado na usuarioDAO?
hmm… coloque ela como @Resource
Na hora que você tenta fazer a herança use Usuario.class em vez de somente Usuario
Coloquei @Resource, mas não adiantou
Coloquei tambem Usuario.class, ao inves de apenas Usuario, nada também.
O erro é esse:
Cannot find symbol.
symbol: constructor GenericDAO()
location: class br.com.catalogo.dao.GenericDAO<br.com.catalogo.Usuario>
Botasse @Resource nos 2???
Tenta @Components …num lembro mais
¬¬
Coloque sua outra classe… que chama o Dao
constructor DenericDAO() <Deneric ???
Colocar Resource tanto na GenericDao quanto na clase Usuario, é isso? Qual import que dou: javax.anotation, org.apache.taglibs ou sun.security.util?
Funcionou.
Não entendi porque o netbeans estava deixando tudo grifado de vermelho.
Ficou assim:
[code]package br.com.catalogo.dao;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Session;
@Resource
public class GenericDAO {
private Class classePersistencia;
protected Session sessao;
public GenericDAO(Session sessao, Class classePersistencia) {
this.sessao = sessao;
this.classePersistencia = classePersistencia;
}
…
}
[/code]
UsuarioDAO
[code]package br.com.catalogo.dao;
import br.com.catalogo.modelo.Usuario;
import org.hibernate.Session;
import javax.annotation.Resource;
@Resource
public class UsuarioDAO extends GenericDAO {
public UsuarioDAO(Session sessao, Class<?> classe) {
super(sessao, classe);
}
...
}
[/code]
Muito obrigado pelas dicas e pela ajuda, se tiverem alguma coisa a acresectar, agradeço.
Abraços
[quote=Scoobydoo] Botasse @Resource nos 2???
Tenta @Components …num lembro mais
¬¬
Coloque sua outra classe… que chama o Dao
constructor DenericDAO() <Deneric ???[/quote]
Parai, achei que você não tinha implementado o construtor, mas vc implementou .
Mas tem o seguinte, o erro de digitação esta no código ou só na hora de gititar no Guj? Pq a msg de erro refere-se a uma classe DenericDAO e não GenericDAO como deveria.
Não tinha visto, foi erro de digitação na hora de postar a resposta mesmo, é Generic mesmo.