我正在通过休眠创建一个SQL查询。我有一个类似的选择查询;

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


但是休眠将查询转换为

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')||'”));

09-04 15:10
查看更多