gpt4 book ai didi

java - 我如何转义冒号( :) in a mysql query over jdbc that contains a variable assignment?

转载 作者:行者123 更新时间:2023-11-29 01:29:28 26 4
gpt4 key购买 nike

我正在尝试通过 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=truethis 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com