非常类似于这个问题:Check date between two other dates spring data jpa
但是,我尝试使用MongoDB和java.time.LocalDateTime
来实现这一点。
我试过:
findAllByMetadataStartTimeBetween(start, end)
(可以工作,但不包括开始/结束)findAllByMetadataStartTimeGreaterThanEqual(start)
(工作,但没有结束)
然而,当我试着:findAllByMetadataStartTimeGreaterThanEqualAndMetadataStartTimeLessThanEqual(start,end)
我得到的错误:json can't serialize type : class java.time.LocalDateTime
你知道为什么这个特定的组合会抛出这个错误,而前面的组合不会吗?
3条答案
按热度按时间e4eetjau1#
尝试下面的代码。我确信,适用于包含
下面的Spring Data 方法签名适用于独占
hrirmatl2#
您必须进行自定义查询:
cgyqldqp3#
JPA“Between”方法是包含性的。问题可能出在日期对象的精度上。
尝试确保比较的开始日期具有**精确的小时、分钟、秒和毫秒。**即使搜索的数据提前了几毫秒,查询也不会捕获它。
在我的例子中,当我将它们的开始日期都设置为00:00:00.000,结束日期设置为23:59:59.999时,JPA findAllByMetadataStartTimeBetween(start,end)工作正常,并且包含。