Spring DATA JPA Between 和 IsBetween 关键字

Spring DATA JPA Between and IsBetween keywords

如何为以下查询获取 Spring DATA JPA 方法(如 findBy...):

Select * from USER where '2016-02-15' between VALID_FROM and VALID_TO;

你应该这样做

SELECT * FROM users u WHERE e.REFERENCE_FIELD BETWEEN startDate AND endDate

你的代码不是很清楚,不知道2016-02-15是什么,如果是你的字段名或者是一个值,如果是一个值而且你用的是between,你必须指定一个范围,以及要比较的字段。

编辑

如果你想使用 spring 数据 jpa 就这样做

findReferenceFieldBetween(value1,value2);

检查参考。 here

如果你想在结果中包含两个边界日期,你可以在下面的 Spring 数据 jpa

中使用
@Query(value = "{'field' : {$gte : ?0, $lte : ?1}}", fields="{ 'field' : 1}")

List<DTO> findByFieldBetweenQuery(String first, String second);

如果需要所有字段,请删除字段部分。希望对大家有帮助。

在Spring boot: 2.1.6,你可以像下面这样使用:

List<OrderSummaryEntity> findByCreateTimestampBetween(String fromDate, String toDate);

只是为了确认它是如何在内部工作的,如果您将 spring.jpa.properties.hibernate.show_sql=true 属性 放入 applocation.properties 文件中,您可能会看到如下查询。内部只有 BETWEEN 查询。

Hibernate: select order0_.order_id as order_id1_8_, 
           order0_.create_timestamp as create_t2_8_, 
           order0_.inventory_at_order as inventor3_8_,
           order0_.last_updated_by as last_upd4_8_,
           order0_.location_id as location5_8_, 
               ...
               ...
               ...
          from order_summary order0_ 
          where order0_.create_timestamp between ? and ?
SELECT * FROM users WHERE timeStamp BETWEEN 'fromDate' AND 'toDate';

您也可以使用下面的JPA方法来获取数据,就像上面的查询一样。

findByTimeStampGreaterThanEqualAndTimeStampLessThanEqual(fromDate,toDate);