如何在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

回到顶部