检查其他两个日期之间的日期弹簧数据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);
我想要做的是,我会通过一个日期,需要检查日期是否在start
和end
之间,例如(我将通过 9 月 30 日作为日期,并且需要找到所有在其 start
和 end
之间具有 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 之间
在您的情况下,请查看使用 LessThan
或 LessThanEqual
与 GreaterThan
或 GreaterThanEqual
的组合
GreaterThan/GreaterThanEqualLessThan - findByEndLessThan … where x.start
LessThanEqual findByEndLessThanEqual … 其中 x.start
GreaterThan - findByStartGreaterThan ... where x.end> ?1
GreaterThanEqual - findByStartGreaterThanEqual … 其中 x.end>= ?1
您可以使用运算符And
和Or
将两者结合起来。
【讨论】:
您好,这可以使用字符串值吗?因此,例如使用人员表并选择 lastname = "abcd" 到 lastname = "efgh" 之间的所有内容 @Pau 方法名称不应该是findByStartLessThan\Equal
和findByStartGreaterThan\Equal
,所以它对应于JPQL(即where x.start <\= ?1
和where x.end >\= ?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<Article> findAllByPublicationDate(Date publicationDate);
详情可以看这篇文章:
https://www.baeldung.com/spring-data-jpa-query-by-date
【讨论】:
这是不明代码和链接的组合。请添加代码如何工作以及它应该如何解决问题的解释。如果没有这样的解释,你的帖子就会传播这样一种误解,即 *** 是一个兜售无偿编程工作的平台。外部链接不被视为这样的解释。仅链接的答案可能会被删除。以上是关于检查其他两个日期之间的日期弹簧数据jpa的主要内容,如果未能解决你的问题,请参考以下文章
检查日期是不是在另一个数据框中的两个日期之间,如果是则操作日期