我需要在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();
本文向大家介绍如何在MySQL LIKE子句中使用用户变量?,包括了如何在MySQL LIKE子句中使用用户变量?的使用技巧和注意事项,需要的朋友参考一下 使用该函数,我们可以在LIKE子句中使用用户变量。语法如下。 为了理解上述语法,让我们首先创建一个表。创建表的查询如下。 使用insert命令在表中插入记录。查询如下。 使用select语句显示表中的所有记录。查询如下 以下是输出。 这是在LI
我想使用Hibernate(4.3.6 Final)持久化一个以基本类型为键、非实体可嵌入复合类型值为值的映射。 我没有任何问题的基本类型作为键和值,我做了所有的方式一样,这是好的。当我将map值更改为可嵌入复合类型时遇到了问题,如下所示。 但我得到了错误: 原因:com.mysql.jdbc.exceptions.jdbc4.mysqlSyntaxerrorexception:“field li
问题内容: 嗨,我正在尝试将值插入到mysql表中。我正在尝试此代码。我已经为变量分配了值,我想将该变量传递给该插入语句。这样对吗? 这是我尝试过的,但是我无法插入值 问题答案: 试试这个,
问题内容: 搜索了几个小时,但我陷入了使用JPA的PlayFramework学习的困境。我正在建立一个示例网站,可以在其中发布帖子。但是这些帖子可以具有以下状态: PostDraft(帖子是草稿,不发布) PostPublished(帖子可以发布) 这些状态存储在单独的表中。显然,州立草稿 尚不可见。 所以我有这些课: 页面类(从表中获取页面信息,一个页面可以有多个帖子) 帖子类(帖子可以在草稿中
问题内容: 我创建了一个具有持久性上下文(hibernate为提供程序)的非常简单的应用程序,以从数据库中读取一些值。我在Maven中使用Eclipse。 首先,我得到 并根据此主题 http://openejb.979440.n4.nabble.com/problem-with-hibernate- persistence-provider- td980429.html 我排除了hibernat
下面是我的hibernate配置类。 当我通过spring boot运行这个bean时,我得到的错误是“预期的单个匹配bean但找到了2:datasource和DataSourceActiviti”。