gpt4 book ai didi

java - hibernate createStoredProcedureQuery 执行抛出 callablestatement.getmoreresults

转载 作者:行者123 更新时间:2023-12-02 15:09:28 25 4
gpt4 key购买 nike

我第一次使用 Java 调用 SP,所以这可能是我忽略的一个简单问题。

我尝试了几种方法来执行此操作,但都遇到了错误。

em 是一个 EntityManager,声明在类的上层,我在调试期间检查过它,数据库连接是正确的。

第一个是使用会抛出错误的 StoredProcedureQuery;

javax.persistence.PersistenceException: org.hibernate.SQLGrammarException: 错误调用 CallableStatement.getMoreResults

try {
StoredProcedureQuery query = em.createStoredProcedureQuery("usp_myProc");
query.registerStoredProcedureParameter(0, Integer.class, ParameterMode.IN);
query.setParameter(0, id);
query.execute();
}
catch (Exception ex) {
log.error(ex.toString());
}

我的第二次尝试是尝试使用 native 查询(当我阅读文档时听起来不错)

try {
Query query1 = em.createNativeQuery("EXEC usp_myProc ?");
query1.setParameter(1, id);
Integer val = (Integer) query1.getSingleResult();
}
catch (Exception ex) {
log.error(ex.toString());
}

程序已被精简为简单的“选择 1”以确保这不是问题。

PROCEDURE [usp_myProc]
-- Add the parameters for the stored procedure here
@id INT
AS
BEGIN
SELECT 1
END

我搜索了谷歌(这是我从中获取 native 查询代码的地方),但无法返回任何内容。现在,即使只是一个不返回值的存储过程调用对我来说也是一个好结果。

感谢您提供的任何帮助。

最佳答案

StoredProcedureQuery 索引从 1 开始

query.registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN);
query.setParameter(1, id);

关于java - hibernate createStoredProcedureQuery 执行抛出 callablestatement.getmoreresults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831742/

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