java - Hibernate 将日期格式转换为问号

标签 java mysql sql hibernate

我正在通过 hibernate 创建一个 sql 查询。我有一个选择查询;

SELECT IFNULL(DATE_FORMAT(q.create_date, '%Y-%m-%d %H:%i'), ' ') as createDate ..

但是 hibernate 将该查询转换为

SELECT IFNULL(DATE_FORMAT(q.create_date, '%Y-%m-%d %H?'), ' ') as createDate

所以它认为我需要发送一个问号参数。

知道为什么会这样吗?

谢谢

最佳答案

你必须在 Hibernate 中转义 :

引用这篇文章 - Using Hibernate query : colon gets treated as parameter / escaping colon

您可以通过将查询更改为:

SELECT IFNULL(DATE_FORMAT(q.create_date, '%Y-%m-%d %H\\:%i'), ' ') as createDate ..

更新:

或者,您可以替换为这篇文章中提到的 unicode 字符 - how to escape colon in HQL

q=q.replaceAll(":","'||unistr('\\003A')||'");

关于java - Hibernate 将日期格式转换为问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33827916/

相关文章:

mysql - 存储和检索 547.500.000.000 条记录

sql - PL/SQL 存储过程是事务吗?

mysql - 从表中消除排列

java - 何时清理ReferenceQueue?被系统清理了?

java - 使用 OnItemClickListener 单击了哪个元素

java - Android - 创建音频文件的波形(OGG)

java - xampp和net beans可以一起用于tomcat吗

mysql - 在 sql db 中存储已读文章的最佳方法是什么?

mysql查询内连接问题

c# - 为什么此 Entity Framework LINQ 查询不会产生 SELECT DISTINCT?