package fi.arcusys.koku.palvelukanava.palvelut.service.impl; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import fi.arcusys.koku.palvelukanava.palvelut.service.Service; public abstract class AbstractService<T> implements Service<T> { @PersistenceContext protected EntityManager entityManager; protected Class<T> entityClass; public AbstractService(Class<T> entityClass) { this(entityClass, null); } public AbstractService(Class<T> entityClass, EntityManager entityManager) { this.entityClass = entityClass; this.entityManager = entityManager; } public EntityManager getEntityManager() { return entityManager; } public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } public Class<T> getEntityClass() { return entityClass; } @SuppressWarnings("unchecked") public List<T> findAll() { return entityManager.createQuery("select o from "+getEntityClass().getName()+" o)").getResultList(); } public T findById(Object primaryKey) { return entityManager.find(entityClass, primaryKey); } public T update(T entity) { return entityManager.merge(entity); } public void create(Object entity) { entityManager.persist(entity); } public void remove(Object entity) { entityManager.remove(entity); } }