Pessoal eu tô com um problema enorme com o vraptor pq não consigo usar o Generic DAO.
Na verdade eu consegui, mas quando eu deixei de estaciar o EntityManagerFactory e o EntityManager na Generic DAO e e coloquei o VRaptor pra fazer isso, tudo desandou.
public class GenericDao<T, ID extends Serializable> {
private static final EntityManagerFactory factory = Persistence.createEntityManagerFactory("modelmmj");
private EntityManager entityManager = factory.createEntityManager();
private final Class<T> oClass;
public GenericDao() {
this.oClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
protected EntityManager getEntityManager() {
return entityManager;
}
public void salvar(T object) {...}
public void atualiza(T object) {...}
public T pesquisaId(ID id) {...}
public void exclui(T object) {...}
public List<T> listaTodos() {...}
}
e fazend uma extensão dela para o ProdutoDao:
public class ProdutoDao extends GenericDao<Produto, Long>{}
tava funcionando blz.
So que quando o VRaptor estancia o EntityManager pra mim eu mudei o Generic Dao assim:
@Component
public class GenericDao<T, ID extends Serializable> {
private final EntityManager entityManager;
private final Class<T> oClass;
public GenericDao(EntityManager entityManager) {
this.entityManager = entityManager;
this.oClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
protected EntityManager getEntityManager() {
return entityManager;
}
public void salvar(T object) {...}
public void atualiza(T object) {...}
public T pesquisaId(ID id) {...}
public void exclui(T object) {...}
public List<T> listaTodos() {...}
}
Ai me gera um problema. Eu não posso colocar um construtor sem argumentos pq dá erro.
Mas o meu ProdutoDao pede um construtor sem argumentos do GenericDao.
Alguem me ajuda.