Crudrepository如何在最后日期之间找到?

时间:2018-06-22 20:55:29

标签: java spring spring-boot jpa spring-data-jpa

我的域的“日期”字段已更新,我想以此为依据

@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);

3 个答案:

答案 0 :(得分:3)

您快到了。如果我正确阅读了文档,则可能会稍作调整:

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

来源:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.limit-query-result

答案 1 :(得分:1)

您可以使用@Query注释对方法进行注释并编写HQL查询

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

答案 2 :(得分:0)

我希望有人能找到更优雅的东西,但是现在我正在使用的是

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);