java - 休眠查询返回错误的日期
问题描述
当我从 mysql 表中检索日期时,它总是返回 1 天前的日期,日期格式为 yyyy-MM-dd,所以如果我在打印结果时有 2018-10-17,它会作为 2018-10-16 . 如果我使用命令行检查日期,它们是正确的。这是 Dao 类中检索日期的方法:
public List<LocalDate> getDates(String username){
List<LocalDate> dates;
Query query = manager.createQuery("select date from Calendar where username =:username");
query.setParameter("username",username);
dates = query.getResultList();
return dates;
}
当我打印列表时,所有日期都是在 1 天前打印的,就像我在我的 sql 上一样。
这就是我在 servlet 上获取日期并使用 hibernate 将日期存储在 mysql 上的方式。
String dateString = request.getParameter("date");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate dataInicial = LocalDate.parse(dataInicialString, formatter);
我在 mysql 中使用的数据类型是 DATE。然后我用 hibernate 为我做剩下的事情,如果你需要任何我没有提供的代码,请问我。提前谢谢。
对不起英语不好!
解决方案
我找到了需要做的事情,我更改了 HQL 查询,我不知道确切原因,但是当我这样做时
Query query = manager.createQuery("select DATE_FORMAT(date,'%Y-%m-%d') from Calendar where username =:username");
有用!!!!
推荐阅读
- angular - Angular 和 NPM 依赖 VS devDependencies
- java - 如何从 Java 代码中获取 Kafka 主题的复制因子
- react-native - useDispatch() 和 useSelector() 没有在钩子中工作?
- postgresql - PostgreSQL - citext 比文本执行 SELECT
- mongodb-query - Api-Platform ODM IRI 参考获取空对象
- c# - 如何使用 C# 连接两个表,其中一个表包含 MongoDB 中另一个表的 ID 列表
- css - 在另一个 div bootstrap-4 中垂直居中 div
- codeigniter - 如何在 Codeigniter 中多次上传图像
- c# - 如何通过名称动态访问变量?
- linux - 从文件中删除除一行之外的所有行