检查两个其他日期之间的日期春季数据jpa

时间:2016-09-30 05:33:40

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

我有这个型号:

public class Event {
    private String name;
    private Date start;
    private Date end;
}

和存储库

@Repository
public interface EventRepository extends JpaRepository<Event, Long> {
    List<Event> findByEventTypeAccount(Account account);
}

我想要做的是,我将传递一个日期,并且需要检查日期是否在startend之间,例如(我将在9月30日作为日期通过,并且需要查找所有条目他们在startend

之间有9月30日

findDateisBetweenStartAndEnd(Date date)

之类的东西

4 个答案:

答案 0 :(得分:61)

你应该看看the reference documentation。它解释得很好。

在你的情况下,我认为你不能在两者之间使用,因为你需要传递两个参数

  

介于之间 - findByStartDateBetween ...其中x.startDate介于?1和?2之间

在您的情况下,请考虑使用LessThanLessThanEqualGreaterThanGreaterThanEqual

的组合
  • 每种不超过/ LessThanEqual
  

LessThan - findByEndLessThan ...其中x.start&lt; λ1

     

LessThanEqual findByEndLessThanEqual ...其中x.start&lt; =?1

  • GREATERTHAN / GreaterThanEqual
  

GreaterThan - findByStartGreaterThan ...其中x.end&gt; λ1

     

GreaterThanEqual - findByStartGreaterThanEqual ...其中x.end&gt; =?1

您可以使用运营商AndOr来合并两者。

答案 1 :(得分:18)

我确实使用了以下解决方案:

--cgroups_root

答案 2 :(得分:3)

您还可以使用@Query

编写自定义查询
@Query(value = "from EntityClassTable t where yourDate BETWEEN :startDate AND :endDate")
public List<EntityClassTable> getAllBetweenDates(@Param("startDate")Date startDate,@Param("endDate")Date endDate);

答案 3 :(得分:1)

也许您可以尝试

List<Article> findAllByPublicationDate(Date publicationDate);

可以在本文中查看详细信息:

https://www.baeldung.com/spring-data-jpa-query-by-date