【问题标题】:Query by date(oracle date in db and local date in java entity) is not working in spring java按日期查询(数据库中的oracle日期和java实体中的本地日期)在spring java中不起作用
【发布时间】:2018-06-26 03:41:33
【问题描述】:

我正在尝试在 spring 存储库类中按日期查询,但它不起作用。它在本地 h2 数据库中工作正常,但在 Oracle 数据库中不起作用。

在控制器类中:-

@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<OrderLine>> getOrderDetails(@RequestParam("headerSummaryId") Long headerSummaryId,
        @RequestParam(value = "eventMonth",
                required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate eventMonth) {

    List<OrderLine> od = orderLineService.getOrderDetails(headerSummaryId, Optional.ofNullable(eventMonth));
    return ResponseEntity.ok().body(od);
 }

在服务类中:-

@Override
public List<OrderLine> getOrderDetails(Long headerSummaryId, Optional<LocalDate> eventMonth) {

    List<OrderLine> olList = new ArrayList<>();
        olList = orderLineSummaryRepo.findByHeaderSummaryIdAndEventMonthAndVisibleFlag(headerSummaryId,
                eventMonth.get(), true);
                return olList;
 }

在存储库类中:-

List<OrderLine> findByHeaderSummaryIdAndEventMonthAndVisibleFlag(Long headerSummaryId, LocalDate eventMonth,
        Boolean visibleFlag);

实体类中事件月份的日期类型为LocalDate。 我使用的是 org.eclipse.persistence.jpa 2.6.4 版。

【问题讨论】:

  • 怎么不工作?查询是否失败,或返回意外结果?
  • 查询没有失败。它无法检索任何数据(提供了正确的参数)。查询返回空值。
  • 查询的 where 子句是 WHERE (((HEADER_SUMMARY_ID = ?) AND (EVENT_MONTH = ?)) AND (IS_VISIBLE_FLAG = ?)) @PaulNUK

标签: java spring oracle jpa-2.0 localdate


【解决方案1】:

注册Jsr310JpaConverters.class,将其作为基包类添加到您的EntityScan注解中

例如

@EntityScan(
        basePackageClasses = {YourAppplication.class, Jsr310JpaConverters.class}
)

【讨论】:

  • 我正在使用 @EntityScan({".......", "org.springframework.data.jpa.convert.threeten"}) 这已经在实体扫描中。
猜你喜欢
  • 1970-01-01
  • 2011-11-02
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 2017-06-07
  • 2018-04-07
相关资源
最近更新 更多