我正在通过休眠创建一个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')||'”));