首页 > 解决方案 > 为什么使用字符串解析日期在 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());

标签: hibernatedatehibernate-criteria

解决方案


首先,我建议将 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);

推荐阅读