it-swarm.com.ru

Crudrepository Как найти по последней дате между?

В моем домене обновлено поле «Дата», по которому я хочу выполнить поиск

@Column(name = "updated")
Date updated;

У меня есть объект Java Date, представляющий день, который передается контроллером моей конечной точки.

Date day;

и грубый репозиторий, представляющий мои данные

public interface DataRepository extends CrudRepository<Data, Long> {

   List<Data> findByLastUpdatedInDate(Date date);

}

Очевидно, что вышеприведенный метод не работает, но есть ли что-то подобное? Или я собираюсь сделать поиск между последующим поиском последней записи вручную?

Правка: вот как я получаю день; dateString передается контроллером.

SimpleDateFormat dateFormatIn = new SimpleDateFormat("yyyy-MM-dd");
Date day = dateFormatIn.parse(dateString);
2
Damien

Ты почти там. Небольшой твик был бы таким, если бы я правильно прочитал документацию:

Data data = dataRepository.findTopByUpdatedBetweenOrderByUpdatedDesc(start, stop);

Источник: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.limit-query-result

3
Jonck van der Kogel

Вы можете аннотировать свой метод с помощью аннотации @Query и писать HQL-запрос.

@Query("select d from Data d where d.updated= :date")
List<Data> findByLastUpdatedInDate(@Param("date") Date date);
1
Peter1982

Я надеюсь, что кто-то найдет что-то более элегантное, но сейчас я использую

List<Data> findByUpdatedBetweenOrderByUpdatedDesc(Date start, Date stop);

И перевести день с

Date start = new Date(day.getTime());
Date stop = new Date(day.getTime() + 86400000L);

чтобы получить мою запись с

Data data = dataRepository.findByUpdatedBetweenOrderByUpdatedDesc(start, stop).get(0);
0
Damien