Não estou conseguindo utilizar corretamente o GenericDAO, em uma das minhas tentativas fiz como está logo abaixo:
@Resource
public MembrosController(GenericDao<Membro> dao, Validator validator, Result result){
this.dao = dao;
this.result = result;
this.validator = validator;
}
@Component
public class GenericDao<T> {
protected final Session session;
private final Class classe;
public GenericDao(Session session, Class classe) {
this.session = session;
this.classe = classe;
}
@SuppressWarnings("unchecked")
public T procuraPorId(Long id){
return (T) this.session.load(this.classe, id);
}
Vou fazer uma campanha: por favor, não use generic daos. Entenda aqui o quanto uma dao assim é ruim: http://blog.caelum.com.br/2006/10/29/brincando-com-generics-o-bizarregenericdao/
Mas se mesmo assim você quiser usar… você precisa nos dizer o que está acontecendo. Há algum erro? O que está acontecendo? Há algum stacktrace? Quais as mensagens?
Há algum tempo o vraptor não suportava generic-types. Mas acho que o Lucas já resolveu isso. Qual versão do Vraptor você está usando?
o Spring não suporta muito bem generic-types, e por consequencia o vraptor tb não…
de qqer forma, o construtor do GenericDao recebe uma Class, e o vraptor/spring não conseguem decidir qual é essa class…
crie a classe:
@Component
public class MembroDao extends GenericDao<Membro> {
//delega o construtor, mas só receba Session, e não Class...
}
que vai funcionar, de preferencia referencie ela, e não o genericDao