Referenciando classes em Genericos

2 respostas
nicholas.bittencourt

Pessoal,

Estava tentando fazer um DAO Genérico usando Hibernate com mais ou menos o seguinte código:

public abstract class GenericDAO<E> {

	[...]
	
	public List<E> buscarTodos() {
		List<E> result = null;
		Criteria criteria = session.createCriteria(E.class);
		
		result = criteria.list();
		return result;
	}
}

O problema é que não consigo criar um objeto Classe a partir do token da Classe, impedindo a criação do Criteria. Alguem tem alguma solução que não a colocação de um parametro Class na chamada??

2 Respostas

georgesq

não tive como fzr isto tb, estão criei um construtor q recebe esta classe e passa para a super asssim:

public JPABaseDAO(final Class objectClass, final String pun) {
	this.objectClass = objectClass;
}

public T get(final PK pk) throws DAOException {
	return (T) getEntityManager().find(this.objectClass, pk);
}

mais acho uma boa vc migrar de hibernate pra JPA, assim vc não tem mais q ficar fazendo esses criterias.

nicholas.bittencourt

Achei a solução mas esqueci de postar aqui…

clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

Mas isso só funciona se a sua classe extender o genérico. Para tratar genéricos criados dinamicamente, como normalmente fazemos com ArrayList ainda estou pesquisando.

Criado 17 de janeiro de 2007
Ultima resposta 28 de jun. de 2007
Respostas 2
Participantes 2