package eu.eudat.queryable; import eu.eudat.entities.DataEntity; import eu.eudat.queryable.predicates.OrderByPredicate; import eu.eudat.queryable.predicates.SelectPredicate; import eu.eudat.queryable.predicates.SinglePredicate; import javax.xml.crypto.Data; import java.util.List; import java.util.Set; public interface QueryableList> { QueryableList where(SinglePredicate predicate); List select(SelectPredicate predicate); List toList(); T getSingle(); QueryableList skip(Integer offset); QueryableList take(Integer length); QueryableList distinct(); QueryableList orderByAsc(OrderByPredicate predicate); QueryableList orderByDesc(OrderByPredicate predicate); QueryableList setHints(Set hints); QueryableList withHint(String hint); Long count(); }