Java 如何在包含变量赋值的jdbc上的mysql查询中转义冒号(:)?

Java 如何在包含变量赋值的jdbc上的mysql查询中转义冒号(:)?,java,mysql,hibernate,jdbc,query-variables,Java,Mysql,Hibernate,Jdbc,Query Variables,我正在尝试运行一个查询,该查询涉及一个通过JDBC对MySQL 5.0数据库(Hibernate 4作为ORM)的自定义变量: 第一个SET@rownum:=0,但此处不需要冒号(我已按照中的建议设置allowMutilQuery=true) 问题在于以下SELECT,我不断得到: org.hibernate.QueryException:参数前缀“:”后不允许有空格 有办法解决这个问题吗?我应该使用其他方法吗 javax.persistence.Query q = EntityManager

我正在尝试运行一个查询,该查询涉及一个通过JDBC对MySQL 5.0数据库(Hibernate 4作为ORM)的自定义变量:

第一个
SET@rownum:=0,但此处不需要冒号(我已按照中的建议设置allowMutilQuery=true)

问题在于以下
SELECT
,我不断得到:

org.hibernate.QueryException:参数前缀“:”后不允许有空格

有办法解决这个问题吗?我应该使用其他方法吗

javax.persistence.Query q = EntityManager instance>.createNativequery(String)

q.setParameter(,)

在hibernate中,冒号的转义
用反斜杠完成:

SET @rownum \:= 0; SELECT rnum FROM ( ...
或在java中:

String sql = "SET @rownum \\:= 0; SELECT rnum FROM ( ...";

伟大的您知道这是否与ORM无关吗?我不知道JPA查询语言jpql中有任何标准。参数的定义,冒号+标识符,不需要转义冒号。但是我知道,我从来没有遇到过这个问题。@Joop Eggen在存储过程中也会起作用,
lp\u dyn:LOOP
我必须在动态存储过程中编写它,但是当我用'/'/'@endlessProgrammer
转义时,它会给我一个错误,“…lp\u dyn:\\\\:LOOP…”
不是吗(反斜杠,在带引号的字符串中两次?我不知道。@Joop Eggen是的!我的错,我的意思是“\\”。但这在存储过程中不起作用。
SET @rownum \:= 0; SELECT rnum FROM ( ...
String sql = "SET @rownum \\:= 0; SELECT rnum FROM ( ...";