代码之家  ›  专栏  ›  技术社区  ›  Damien

粗陋如何在最后一次约会之间找到?

  •  2
  • Damien  · 技术社区  · 7 年前

    我的域和日期字段已更新,我要按其搜索

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

    我有一个表示一天的java日期对象,它由端点的控制器传入。

    Date day;
    

    还有一个代表我的数据的粗略分析

    public interface DataRepository extends CrudRepository<Data, Long> {
    
       List<Data> findByLastUpdatedInDate(Date date);
    
    }
    

    显然上述方法不起作用,但有类似的方法吗?或者我需要在两次查找之间手动搜索最后一个条目吗?

    编辑:这里是我获取day的方法;datestring是由控制器传入的。

    SimpleDateFormat dateFormatIn = new SimpleDateFormat("yyyy-MM-dd");
    Date day = dateFormatIn.parse(dateString);
    
    3 回复  |  直到 7 年前
        1
  •  3
  •   Jonck van der Kogel    7 年前

    你就快到了。如果我正确阅读了文档,可能会有一点小小的调整:

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

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

        2
  •  1
  •   Peter1982    7 年前

    您可以使用@query注释对方法进行注释,并编写hql查询

    @Query("select d from Data d where d.updated= :date")
    List<Data> findByLastUpdatedInDate(@Param("date") Date date);
    
        3
  •  0
  •   Damien    7 年前

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

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