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

问题描述 投票:0回答:1

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

StoredProcedure:

 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的JavaCode:

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

query.executeUpdate()更新了query.list()。但是该行返回错误ResultSet is from UPDATE. No Data

我需要使用createSQLQuery来解决此问题

java mysql hibernate stored-procedures hibernate-4.x
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.