【发布时间】:2021-01-08 22:02:51
【问题描述】:
我正在尝试使用 Spring Data Jpa 创建一个端点,以使用户/客户端能够使用我的表中的日期列查找记录的详细信息,但是正在获取的记录只是结束日期之前的记录。
例如,我想要 18 日到 20 日之间的记录,但获取的记录是 18 日和 19 日的记录,即使表中存在该日期(20 日)的记录,也会忽略 20 日的记录。我需要一种方法来检索 18 日和 19 日的记录以及与结束日期有关的记录,在这种情况下是 20 日。任何帮助表示赞赏。
以下是我在 JPA 存储库中使用 JPA 原生查询尝试过的方法。
在第一种方法中,我使用了 BETWEEN 本地查询,但未获取结束日期的记录。这是下面的代码sn-p:
@Query(value = "SELECT * FROM PAYMENT_MASTER WHERE LAST_UPDATED BETWEEN :startDate AND :endDate", nativeQuery = true)
List<PaymentMaster> getAllBetweenDates(@Param("startDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
@Param("endDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate endDate);
下面是我尝试过的另一种方法,它给出了与上述方法和以前的方法相同的结果。在这里,我使用了原生查询 GREATER THAN/EQUAL TO AND LESS THAN/EQUAL TO,但仍然没有得到想要的结果。这是存储库中的代码 sn-p:
@Query(value = "SELECT * FROM PAYMENT_MASTER WHERE LAST_UPDATED >= :startDate AND LAST_UPDATED <= :endDate", nativeQuery = true)
List<PaymentMaster> getAllBetweenDates(@Param("startDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
@Param("endDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate endDate);
这是来自我的控制器的代码 sn-p:
@PostMapping("/find/date-between")
public ResponseEntity<Object> findPaymentByDate(@RequestBody DateSearcherDto searcherDto) {
List<PaymentMaster> paymentMasterList = paymentMasterRepository.getAllBetweenDates(searcherDto.getStartDate(), searcherDto.getEndDate());
List<PaymentMasterDto> resultsDto = new ArrayList<>();
}
更新
请查看我在下面创建的 DateSearcher DTO。
package com.oasis.firsbacklogbackend.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Data
public class DateSearcherDto {
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME, pattern = "yyyy-MM-dd")
private LocalDateTime startDate;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME, pattern = "yyyy-MM-dd")
private LocalDateTime endDate;
}
您的帮助将不胜感激。谢谢。
【问题讨论】:
-
LAST_UPDATED 的类型是什么?本地日期?实例?
-
这是我在下面的实体类中使用它的最后一个更新字段...谢谢@UpdateTimestamp @Column(name="last_updated") private LocalDateTime lastUpdated;
标签: java spring-boot spring-data-jpa