检查其他两个日期之间的日期弹簧数据jpa

Posted

技术标签:

【中文标题】检查其他两个日期之间的日期弹簧数据jpa【英文标题】:Check date between two other dates spring data jpa 【发布时间】:2017-02-08 14:36:02 【问题描述】:

我有这个模型:

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)

【问题讨论】:

您应该查看参考文档:docs.spring.io/spring-data/jpa/docs/current/reference/html/…。解释得很好。 【参考方案1】:

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

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

Between - findByStartDateBetween … 其中 x.startDate 在 ?1 和 ?2 之间

在您的情况下,请查看使用 LessThanLessThanEqualGreaterThanGreaterThanEqual 的组合

LessThan/LessThanEqual

LessThan - findByEndLessThan … where x.start

LessThanEqual findByEndLessThanEqual … 其中 x.start

GreaterThan/GreaterThanEqual

GreaterThan - findByStartGreaterThan ... where x.end> ?1

GreaterThanEqual - findByStartGreaterThanEqual … 其中 x.end>= ?1

您可以使用运算符AndOr 将两者结合起来。

【讨论】:

您好,这可以使用字符串值吗?因此,例如使用人员表并选择 lastname = "abcd" 到 lastname = "efgh" 之间的所有内容 @Pau 方法名称不应该是findByStartLessThan\EqualfindByStartGreaterThan\Equal,所以它对应于JPQL(即where x.start &lt;\= ?1where x.end &gt;\= ?1)? 您能告诉我您从客户端传递到调用方法 findDateisBetweenStartAndEnd 的控制器的日期格式吗?当我通过客户端为端点提交请求时,我坚持使用格式部分。 如何在另一个属性上添加 where 条件?在 Spring Data jpa 的单个查询中,在哪里和之间?【参考方案2】:

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

findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);

【讨论】:

你请你添加一点(更详细的)解释? 但是为此你应该传递两个日期开始和结束一个,我认为是正确的方法 婴儿车的顺序有误。首先,param 与 startDate 相关,而不是 endDate @JordanSilva ,参数的顺序是正确的,因为它测试的是一个周期跨越另一个周期,而不是另一个周期完全在检查周期内。【参考方案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);

编辑:对于 LocalDateTime,我刚刚尝试了这个解决方案,用于在 Spring JPA 中根据日期和类型过滤记录:

Page<MyEntity> findMyEntityByEntityDateBetweenAndType(
            @Param("startDate") LocalDateTime startDate,
            @Param("endDate") LocalDateTime endDate, @Param("type") String type, Pageable pageable);

这里的EntityDate可以是CreatedDate、ModifiedDate等

【讨论】:

它将如何处理空开始和结束日期?【参考方案4】:

也许你可以试试

List&lt;Article&gt; findAllByPublicationDate(Date publicationDate);

详情可以看这篇文章:

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

【讨论】:

这是不明代码和链接的组合。请添加代码如何工作以及它应该如何解决问题的解释。如果没有这样的解释,你的帖子就会传播这样一种误解,即 *** 是一个兜售无偿编程工作的平台。外部链接不被视为这样的解释。仅链接的答案可能会被删除。

以上是关于检查其他两个日期之间的日期弹簧数据jpa的主要内容,如果未能解决你的问题,请参考以下文章

检查日期是不是在另一个数据框中的两个日期之间,如果是则操作日期

如何检查今天是不是在 Twig 的两个日期之间?

检查两个日期之间的时间戳

在 T-SQL 中检查两个日期之间的日期

需要 mongodb 查询来检查日期是不是在存储在集合文档中的两个日期之间[重复]

SQL函数检查日期是不是在另一个表的2个日期之间