package nu.xss.jpa.dao; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; public abstract class GenericJpaDao implements Dao, Serializable { private static final long serialVersionUID = 4998055731089977476L; @PersistenceContext protected EntityManager entityManager; protected Class entity; @SuppressWarnings("unchecked") public GenericJpaDao() { ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass(); this.entity = (Class) genericSuperclass.getActualTypeArguments()[1]; } public void persist(E entity) { entityManager.persist(entity); } public void remove(E entity) { entityManager.remove(entity); } public E findById(K id) { return entityManager.find(entity, id); } public List findAll() { // TODO Auto-generated method stub return null; } }