如何在Hibernate中使用Mysql变量?
我需要在Hibernate中使用带有变量的本地SQL查询。
但是hibernate抛出错误信息:参数前缀后不允许有空格
因此,与:= mysql变量分配和hibernate变量分配存在冲突。
这是我的SQL查询:
SET @rank:=0; UPDATE Rank SET rank_Level=@rank:=@rank+1 ORDER BY Level;
hibernate代码(jpa语法):
Query query = em.createNativeQuery(theQuery);query.executeUpdate();
我无法使用存储过程,因为我的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 ;
技巧是使用CONCAT函数在存储过程中动态创建查询。
然后,在经典的hibernate函数中调用该过程:
Query q = em.createNativeQuery("CALL updateRank('lvl')");q.executeUpdate();
以上是 如何在Hibernate中使用Mysql变量? 的全部内容, 来源链接: utcz.com/qa/410442.html