package qa.qcri.aidr.trainer.api.dao; import org.hibernate.criterion.Criterion; import java.io.Serializable; import java.util.List; public interface AbstractDao<E, I extends Serializable> { E findById(I id); void save(E e); List<E> findAll(); void saveOrUpdate(E e); void delete(E e); void saveOrMerge(E e); List<E> findByCriteria(Criterion criterion); E findByCriterionID(Criterion criterion); List<E> findByCriteria(Criterion criterion, Integer count) ; List<E> findByCriteriaByOrder(Criterion criterion, String[] orderBy, Integer count); List<E> getMaxOrderByCriteria(Criterion criterion, String orderBy) ; List<E> findByCriteriaWithAliasByOrder(Criterion criterion, String[] orderBy, Integer count, String aliasTable, Criterion aliasCriterion); }