java如何在包含变量赋值的jdbc上的mysql查询中转义冒号(:?
我正在尝试运行一个查询,该查询涉及一个自定义变量,通过JDBC指向MySQL 5.0数据库(Hibernate 4作为ORM):
SET @rownum := 0; SELECT rnum FROM (
SELECT (@rownum := @rownum + 1) AS rnum, col_name_a
FROM table_name
WHERE (col_name_b IS NULL OR col_name_b != 'USER' ) ORDER BY col_name_a) c
WHERE col_name_a = :aValue
重置变量需要第一个SET @rownum := 0;
,但这里不需要冒号(我已经按照this question中的建议设置了allowMutilQuery=true)
问题在于以下SELECT
,我不断得到:
org.hibernate.QueryException: Space is not allowed after parameter prefix ':'
有办法吗?我应该使用其他方法吗
javax.persistence.Query q = EntityManager instance>.createNativequery(String)
及
q.setParameter(<param name>, <param value>)
?
# 1 楼答案
在hibernate中,冒号
:
的转义用反斜杠完成:或者在java中: