gente, ajuda, estou tentando buscar apenas um item da minha tabela, utilizando a ID como parâmetro, mas estou tendo problema com a classe mais genérica que ira fazer isso
package br.com.intranethope.dao;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class GenericDAO {
private Class<T> classe;
@SuppressWarnings("unchecked")
public GenericDAO() {
this.classe = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@SuppressWarnings("unchecked")
public Class<T> buscarPorID(int id) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("intranethope");
EntityManager em = emf.createEntityManager();
return (Class<T>) em.find(classe.getClass(), 1);
}}
package intranethope;
import java.util.List;
import javax.persistence.Temporal;
import org.junit.Ignore;
import org.junit.Test;
import br.com.intranethope.dao.EstadoDAO;
import br.com.intranethope.entidades.Estado;
public class TesteHibernate {
@Test
@Ignore
@Test
public void testeBuscaporID() {
EstadoDAO dao = new EstadoDAO();
Class<Estado> est = dao.buscarPorID(1);
System.out.println(est);
}
}
Ola,
Faça;
public class GenericDAO<T, PK extends Serializable> {
public T getById(PK pk) {
return (T) em.find(getTypeClass(), pk);
}
private Class<?> getTypeClass() {
Class<?> clazz = (Class<?>) ((ParameterizedType) this.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
return clazz;
}
}
jrxxjr
Dezembro 14, 2020, 5:02pm
#5
Sei que é meio antigo esse post, mas acho que posso ajudar.
Segue um exemplo de Dao genérico:
public class Dao<T>{
private final EntityManager em;
private final Class<T> classe;
public Dao(EntityManager em, Class<T> classe){
this.em = em;
this.classe = classe;
}
public T busca(Integer id){
return this.em.getReference(classe, id);
}
}
Fiz um tutorial sobre JPA, por favor, veja se ajuda.
Seguem os links:
http://www.tidicas.com.br/?p=1864
http://www.tidicas.com.br/?p=130