我有一个DB2表,其中SOLD_DATE字段是TIMESTAMP类型(例如,2017-12-07 08:43:23)。
我希望能够发送URL提供开始和结束日期URL参数像下面我的控制器:
http://localhost:8080/irwapi/v1/logs/2014-10-20/2021-10-20
我的控制器看起来像:
@GetMapping(path = "/{startDate}/{endDate}")
public List<CarResponse> getCarsSoldBetween(
@PathVariable("startDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@PathVariable("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) {
List<CarResponse> cars = myRepository.getCarsSoldBetween(startDate, endDate);
return cars;
}
myRepository具有如下定义的@Query
方法:
@Query("select c from CarEntity c where c.carType = 'SPORT' and C.soldDate between ?1 and ?2")
List<CarEntity> getCarsSoldBetween(Date startDate, Date endDate);
当我执行上面的方法时,上面的@Query
方法抛出错误:
“无法将类型'java.lang.String'的值转换为所需类型'java.sql. Date';嵌套的异常是一个嵌套的异常。无法将值'2014-10- 20'从类型[java.lang.String]转换为类型[@org.springframework.web.bind.annotation.PathVariable @org.springframework.format.annotation.DateTimeFormat java.sql.Date];嵌套的异常是一个异常。找不到能够从类型[java.util.Date]转换为类型[@org.springframework.web.bind.annotation.PathVariable @org.springframework.format.annotation.DateTimeFormat java.sql.Date]的转换器"
2条答案
按热度按时间of1yzvn41#
有两个选项可解决此问题。
1.在控制器级别上,适用于控制器内的所有请求。
外地一级的备选办法2。
kyxcudwk2#
上面的
@DateTimeFormat(pattern = "yyyy-MM-dd")
对我不起作用的原因是我使用的Date
参数类型是java.sql.Date
而不是java.utils.Date
。一旦我把它改成正确的包,
@DateTimeFormat
就开始正常工作了。