java - 嵌套异常是 java.lang.IllegalArgumentException:参数值 [2020-04-20] 与预期类型不匹配 [java.util.Date (n/a)]]
问题描述
我想发送这个请求 http://localhost:8080/ {url}?start=2020-04-20&end=2020-04-24&status=success&status=failed
在事务模型中
private java.sql.Timestamp addedOn;
我正在尝试为以下博客创建多个过滤器的动态查询: https ://attacomsian.com/blog/spring-data-jpa-specifications
Specs.java 文件 toPredicate 方法
if (criteria.getOperation().equals(SearchOperation.GREATER_THAN)) {
predicates.add(builder.greaterThan(
root.get(criteria.getKey()), criteria.getValue().toString()));
} else if (criteria.getOperation().equals(SearchOperation.LESS_THAN)) {
predicates.add(builder.lessThan(
root.get(criteria.getKey()), criteria.getValue().toString()));
}
这是我的控制器代码
Timestamp start = new Timestamp(dateFormat.parse(request.getParameter("start")).getTime());
Timestamp end = new Timestamp(dateFormat.parse(request.getParameter("end")).getTime());
Specs txnSpecs = new Specs();
txnSpecs.add(new SearchCriteria("addedon", start, SearchOperation.GREATER_THAN_EQUAL));
txnSpecs.add(new SearchCriteria("addedon", end, SearchOperation.LESS_THAN_EQUAL));
txnSpecs.add(new SearchCriteria("status", Arrays.asList(request_params.get("status")), SearchOperation.IN));
List<Transaction> txnList = transactionRepository.findAll(txnSpecs);
return txnList;
但是当我提出请求时,我得到:
nested exception is java.lang.IllegalArgumentException: Parameter value [2020-04-20] did not match expected type [java.util.Date (n/a)]]
在将 Date 值作为 SQL 查询的参数发送之前,是否需要转换它?或者我需要使用其他类型的日期?
解决方案
Date
在将其作为 SQL 查询的参数发送之前,是否需要转换该值?
不,反之亦然,您必须保留它 aDate
但您通过调用将其转换为 String criteria.getValue().toString()
。
推荐阅读
- google-apps-script - 使用 Apps 脚本在 Google Drive 上使用单元格值作为驱动器名称创建(团队)共享驱动器
- html - Outlook 2016 / 2019 未显示边框底部
- html - 使用 Bootstrap 4:在页面中心居中登录表单时如何考虑导航栏?
- pandas - 在 Pandas 中将 MM:SS 列隐藏到 HH:MM:SS 列?
- javascript - 用于域验证的 javascript 正则表达式在 Safari 中不起作用
- tcl - 在 TCL 中获取列值
- listview - 使用 Salesforce 中的共享设置自定义列表视图
- ios - 无法将字符串转换为 datePicker 的日期
- javascript - 将 div 设置为剩余窗口高度
- kotlin - 从 forEach kotlin 返回单个值