Java 如何在包含变量赋值的jdbc上的mysql查询中转义冒号(:)?
我正在尝试运行一个查询,该查询涉及一个通过JDBC对MySQL 5.0数据库(Hibernate 4作为ORM)的自定义变量: 第一个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
SET@rownum:=0重置变量时需要code>,但此处不需要冒号(我已按照中的建议设置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 ( ...";