Предполагается, что вы используете Spring в качестве аннотации, а также если вы используете SpringData в качестве уровня абстракции для связи с базой данных. Вы не должны расширять JPARepository, вместо этого вы должны расширять CrudRepository. Там вы можете определить запросы с помощью специального соглашения об именах или HQL.
Например:
@Repository
public interface PurchaseRepository extends CrudRepository<Purchase, Long> {
List<Purchase> findAllOrderByDate();
long deleteByDate(Date date);
}
Функция deleteByDate будет возвращать количество удаленных строк.
Как видите, вы можете определять запросы по их имени. Для получения дополнительной информации об этом: https://docs.spring.io/spring-data/data-commons/docs/2.1.8.RELEASE/reference/html/
Обновление: реализация является лишь примером, вы не можете скопировать и вставить его и использовать как есть. Как объясняется в упомянутой выше документации, вы можете определить запрос с помощью специального соглашения об именах, которое позволяет вам определять запросы семантическим способом, используя имена свойств из вашей сущности. В вашем случае это будет findAllOrderByCreatedAsc
или findAllOrderByCreatedDesc
То же самое относится к удалению.