package br.com.bbsys.dao.generic;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import br.com.caelum.vraptor.ioc.Component;
import br.com.k2studio.vraptor.jpa.BaseEntity;
import br.com.k2studio.vraptor.jpa.JPAFactory;
@Component
public class GenericDAO {
protected EntityManager manager;
public GenericDAO() {
manager = JPAFactory.getEntityManager();
}
public BaseEntity insert(BaseEntity entity) {
manager.getTransaction().begin();
manager.persist(entity);
manager.getTransaction().commit();
return entity;
}
public BaseEntity update(BaseEntity entity) {
manager.getTransaction().begin();
manager.merge(entity);
manager.getTransaction().commit();
return entity;
}
public void remove(BaseEntity entity) {
entity = selectById(entity);
manager.getTransaction().begin();
manager.remove(entity);
manager.getTransaction().commit();
}
public BaseEntity selectById(BaseEntity entity) {
entity = manager.find(entity.getClass(), entity.getId());
return entity;
}
public List<BaseEntity> selectByNamedQuery(String namedQuery) {
return selectByNamedQuery(namedQuery, new Object[0]);
}
public List<BaseEntity> selectByNamedQuery(String namedQuery, Object ... parameters) {
try {
Query query = manager.createNamedQuery(namedQuery);
if(parameters != null && parameters.length > 0) {
for (int i = 0; i < parameters.length; i++) {
query.setParameter(i + 1, parameters[i]);
}
}
List list = query.getResultList();
return list;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}