英文:
spring-data-mongodb : Between change from ($gt, $lt) to ($gte, $lte)
问题
在我的代码库中,我添加了以下方法:
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
spring-data-mongo 生成的查询如下:
[debug] 2020-09-11 15:39:59,550 - o.s.d.m.c.MongoTemplate - 使用查询:{ "eventDate" : { "$gt" : { "$date" : 1577833200000 }, "$lt" : { "$date" : 1599775200000 } } } 字段:Document{{}} 用于类:class xxxxxx
是否有办法告诉 spring data 在使用 Between 关键字时使用 $gte
和 $lte
而不是 $gt
和 $lt
?
英文:
In my repository I've added the following method :
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
Generated query by spring-data-mongo is :
> [debug] 2020-09-11 15:39:59,550 - o.s.d.m.c.MongoTemplate - find using
> query: { "eventDate" : { "$gt" : { "$date" : 1577833200000 }, "$lt" :
> { "$date" : 1599775200000 } } } fields: Document{{}} for class: class
> xxxxxx
Is there a way to tell spring data to use $gte
and $lte
instead of $gt
and $lt
when using Between keyword ?
答案1
得分: 2
你可以按照以下方式使用 @Query 注解来获取帮助:
@Query(value = "{'eventDate': { $gte: ?0, $lte: ?1}}")
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
英文:
You can take help of @Query annotation as follows:
@Query(value = "{'eventDate':{ $gte: ?0, $lte: ?1}}")
List<Event> findByEventDateBetween(LocalDate start, LocalDate end);
答案2
得分: 0
以下是翻译好的内容:
下面的代码更简单:
List<Event> findByEventDateBetween(Range<LocalDate> dateRange);
调用:
findByEventDateBetween(Range.closed(start, end))
参考链接:
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords
根据范围设置下限和上限($gt / $gte 和 $lt / $lte),参考链接中有解释。
英文:
The following code is simpler:
List<Event> findByEventDateBetween(Range<LocalDate> dateRange);
call:
findByEventDateBetween(Range.closed(start, end))
reference:
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords
lower / upper bounds ($gt / $gte & $lt / $lte) according to Range
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论