为什么使用String解析日期在Hibernate中找不到结果

时间:2019-05-14 08:07:24

标签: hibernate date hibernate-criteria

我正在使用mysql数据库,列类型是日期。

为什么我使用参数String解析为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());

1 个答案:

答案 0 :(得分:0)

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