gpt4 book ai didi

mysql - 如何在 Hibernate 中使用 Mysql 变量?

转载 作者:可可西里 更新时间:2023-11-01 07:55:09 28 4
gpt4 key购买 nike

我需要在 Hibernate 中通过使用变量来使用 native 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();

关于mysql - 如何在 Hibernate 中使用 Mysql 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2712240/

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