如何从具有IN和OUT参数的Hibernate调用存储过程

 turneerpelliccia_291 发布于 2023-02-13 11:31

我想从Hibernate调用一个存储过程,它返回一个out值.这是我的存储过程.

create procedure myProcedure
(  
in in_Id int,  
out out_Id int  
)  
begin  
...  
END;

我正在尝试这个来调用我的程序

Query query = session.createSQLQuery(  
"CALL myProcedure(:in_Id)")  
.setParameter("in_id", 123);   
//Not sure how to register out parameters...??      
List result = query.list();

我尝试了一切,但没有运气.你能帮我吗?如果我尝试以上说法:

PROCEDURE myProcedure的参数数量不正确; 预计2,得到1

我试着添加一个out参数

myProcedure(:out_id:in_Id)

但随后它说

并非所有命名参数都已设置:

我不知道如何设置参数?它像下面这样吗?

.setParameter("out_id", ?);

任何帮助表示赞赏:)

2 个回答
  • 我写了一篇非常详细的文章,介绍如何从Hibernate调用MySQL存储过程和数据库函数,但我也会在这里写一篇简短的摘要.

    考虑到你有一个输出基本类型的简单存储过程:

    CREATE PROCEDURE count_comments (
       IN postId INT, 
       OUT commentCount INT
    ) 
    BEGIN
        SELECT COUNT(*) INTO commentCount 
        FROM post_comment  
        WHERE post_comment.post_id = postId; 
    END
    

    您可以使用JPA调用此存储过程StoredProcedureQuery:

    StoredProcedureQuery query = entityManager
        .createStoredProcedureQuery("count_comments")
        .registerStoredProcedureParameter(
            "postId", Long.class, ParameterMode.IN)
        .registerStoredProcedureParameter(
            "commentCount", Long.class, ParameterMode.OUT)
        .setParameter("postId", 1L);
    
    query.execute();
    
    Long commentCount = (Long) query
        .getOutputParameterValue("commentCount");
    

    2023-02-13 11:33 回答
  • 最简单的方法是将out参数作为返回参数的一部分返回(仅当您有权访问存储过程时才相关).
    jest添加如下所示的商店程序

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

    完成后,以下列方式使用Hibernet非常简单

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

    结果包含out参数,如果你想要返回乘法参数你可以通过选择@ parm1,@ parm2,...,@ parmn来添加它

    希望它有帮助

    2023-02-13 11:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有