hibernate - 为什么使用字符串解析日期在 Hibernate 中找不到结果
问题描述
我正在使用 mysql 数据库,列类型是日期。
为什么当我使用 String parse to Date 的参数时找不到结果。
当我使用“new Date()”可以找到结果时。
道:
Session session = sessionFactory.getCurrentSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<vo> query = builder.createQuery(vo.class);
Root<vo> root = query.from(vo.class);
query.select(root).where(builder.equal(root.get("id"), id), builder.equal(root.get("querydate"), queryDate));
vo result = session.createQuery(query).getSingleResult();
主要的 :
String qdate = "20190514";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date queryDate = sdf.parse(qdate);
// this can't find result!
vo data = dao.queryByIdAndDate("SwnZMgFsE52J", queryDate);
// this can find result!
vo data = dao.queryByIdAndDate("SwnZMgFsE52J", new Date());
解决方案
首先,我建议将 Java 类的第一个字母大写。建议这样做。因此,您的问题与您的日期格式与从 db 接受的格式不匹配有关。尝试以这种方式格式化的日期:yyyy-MM-dd。所以在你的主要尝试这个:
String qdate = "2019-05-14";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date queryDate = sdf.parse(qdate);
vo data = dao.queryByIdAndDate("SwnZMgFsE52J", queryDate);
推荐阅读
- php - 使用表单 laravel 编辑数据库中的数据
- python-3.x - 两个总和 Leetcode python
- python - 如何索引未选择的选项
- jenkins-groovy - 将变量从 shell 脚本传递到 groovy
- aws-lambda - 使用 Terraform 的 AWS API Gateway 中启用 CORS 的端点
- python - 如何合并两个 pandas DataFrame 并正确处理“已删除”的重复值?
- java - Android:如何将图像的尺寸调整为适合 ImageView?
- java - 可重入锁条件
- javascript - 为什么我不能在登录后控制台记录 Facebook accessToken 并在之后重定向到 URL?
- kubernetes - Minikube 失去对节点的跟踪