Ajuda busca por ID JPA/Hibernate

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;
    }
}

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