2
我试图运行涉及在JDBC自定义变量向一个MySQL 5.0数据库(休眠4作为ORM)的查询:如何在包含变量赋值的jdbc的mysql查询中转义冒号(:):
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;
需要重置变量,但结肠(我已经设置了allowMutilQuery = true,如在this question中建议的那样)。
问题是与以下SELECT
,在那里我不断获取:
org.hibernate.QueryException:空格后的参数前缀是不允许的“:”
是否有办法在这附近?我应该使用其他方法比
javax.persistence.Query q = EntityManager instance>.createNativequery(String)
和
q.setParameter(<param name>, <param value>)
?
太好了!你知道这是否与ORM无关? – watery
我不知道JPA查询语言jpql中的任何标准。参数定义冒号+标识符不需要转义冒号。但是知道,我从未遇到过这个问题。 –
@Joop Eggen在存储过程的情况下也可以工作,'lp_dyn:LOOP'我在动态存储过程中必须写入,但当我用'//'将其转义时,会出现错误 – rd22