作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 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;
来重置变量,但那里不需要冒号(我设置了 allowMutilQuery=true如 this question 中所建议)。
问题出在下面的 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>)
?
最佳答案
在 hibernate 中,冒号 :
的转义是用反斜杠完成的:
SET @rownum \:= 0; SELECT rnum FROM ( ...
或者在java中:
String sql = "SET @rownum \\:= 0; SELECT rnum FROM ( ...";
关于java - 我如何转义冒号( :) in a mysql query over jdbc that contains a variable assignment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263771/
我是一名优秀的程序员,十分优秀!