gpt4 book ai didi

java - 如何使用 Hibernate 从存储过程中检索输出参数

转载 作者:行者123 更新时间:2023-12-01 16:45:50 24 4
gpt4 key购买 nike

我正在尝试执行一个存储过程,该过程更新列并在更新后从同一个表中检索文件名

存储过程:

 CREATE DEFINER=`test`@`%` PROCEDURE `update_count`(
IN in_testID VARCHAR(64),
OUT out_FileName VARCHAR(100),
OUT out_Message VARCHAR(100))
BEGIN
UPDATE files SET count=count+1 WHERE testID=in_testID;
SELECT FileName INTO out_FileName FROM files WHERE testID = in_testID;
SET out_Message = 'File updated uccessfully';
END

执行此 StoredProcedure 的 Java 代码:

Query query = session.createSQLQuery("CALL update_count(:in_testID, @out_FileName, @out_Message)").addEntity(FilesBean.class)
.setParameter("in_testID",body.getTestId());
query.executeUpdate();

使用 query.list() 更新了 query.executeUpdate()。但返回错误 ResultSet 的行来自 UPDATE。没有数据

我需要使用 createSQLQuery 来解决这个问题

最佳答案

最简单的方法是将 out 参数作为返回参数的一部分返回(仅当您有权访问存储过程时才相关)。只需添加一个如下所示的存储过程

create procedure myProcedure_only_in_prams (
in in_Id int)
begin
call myProcedure(in_id,@out_Id) ;
select @out_id
END;

完成后,通过以下方式将其与 Hibernate 一起使用非常简单

Query query = session.createSQLQuery(
"CALL myProcedure_only_in_parms (:in_Id)")
.setParameter("in_id", 123);
List result = query.list();

结果包含输出参数,如果您想返回乘法参数,您可以通过执行 select @parm1,@parm2,... ,@parmn

添加它

希望对你有帮助

关于java - 如何使用 Hibernate 从存储过程中检索输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61780416/

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