Spring DATA JPA之间和IsBetween关键字

时间:2016-02-10 15:41:55

标签: spring jpa spring-data spring-data-jpa

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

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

4 个答案:

答案 0 :(得分:7)

你应该这样做

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

你的代码不是很清楚,我不知道2016-02-15是什么,如果是你的字段名称或者是一个值,如果是一个值并且你在两者之间使用,你必须指定一个范围,和要比较的领域。

修改

如果你想使用弹簧数据jpa,那么就这样做

findReferenceFieldBetween(value1,value2);

检查参考。 here

答案 1 :(得分:0)

如果要同时包含两个边界日期,可以在Spring数据jpa中使用以下内容

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

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

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

答案 2 :(得分:0)

在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 ?

答案 3 :(得分:0)

SELECT * FROM users WHERE timeStamp BETWEEN 'fromDate' AND 'toDate';

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

findByTimeStampGreaterThanEqualAndTimeStampLessThanEqual(fromDate,toDate);