Jer*_*nce 3 mysql variables hibernate conflict
我需要在 Hibernate 中使用本机 sql 查询并使用变量。
但是hibernate抛出一个错误说:参数前缀后不允许有空格
所以:= mysql变量赋值和hibernate变量赋值有冲突。
这是我的sql查询:
SET @rank:=0;
UPDATE Rank SET rank_Level=@rank:=@rank+1 ORDER BY Level;
Run Code Online (Sandbox Code Playgroud)
hibernate代码(jpa语法):
Query query = em.createNativeQuery(theQuery);
query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
我无法使用存储过程,因为我的 sql 查询是动态生成的(“Level”可以是“int”或“force”...)
我怎样才能做到这一点 ?
谢谢
好吧,我最终使用存储过程(是的,我最初不想要的)来创建动态查询(我认为这是不可能的)。
这是我的代码:存储过程:
DELIMITER |
DROP PROCEDURE IF EXISTS UpdateRank |
CREATE PROCEDURE UpdateRank(IN shortcut varchar(30))
BEGIN
SET @rank=0;
SET @query=CONCAT('UPDATE Rank SET ', shortcut, '=@rank:=@rank+1 ORDER BY ', shortcut);
PREPARE q1 FROM @query;
EXECUTE q1;
DEALLOCATE PREPARE q1;
END;
|
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
技巧是使用 CONCAT 函数在存储过程中动态创建查询。
然后,调用经典hibernate函数中的过程:
Query q = em.createNativeQuery("CALL updateRank('lvl')");
q.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8446 次 |
| 最近记录: |