你好我正在尝试从hibernate执行mssql存储过程。过程有8个输入参数,没有输出。但是我得到java.sql.SQLException:参数#9没有被设置为执行。
<sql-query name="insertMyData" callable="true">
{ ? = call InsertMyData(?,?,?,?,?,?,?,?) }
</sql-query>
Java调用
Query query = m_entityManager.createNamedQuery("insertMyData");
query.setParameter(1, transaction.getGuid());
query.setParameter(2, new Date());
........指定的其他参数
存储过程
CREATE PROC dbo.insertMyData
@ID uniqueidentifier,
...... 7 more parameters
AS
BEGIN
INSERT INTO dbo.TestData VALUES (
@ID,
........ 7 more parameters
)
END
答案 0 :(得分:0)
我对先前的建议不好:
根据https://forum.hibernate.org/viewtopic.php?f=1&t=986612
另一个有同样问题的人,通过删除“?=”解决了问题,因为没有为问题定义“返回”。我建议你尝试一下。
希望这有帮助。
答案 1 :(得分:0)
好像你忽略了第一个?
,并且在程序调用中setParameter
只调用了?
8次。
这是您应该如何设置第一个参数:
statement.registerOutParameter(1, Types.VARCHAR); //Assuming statement is your CallableStatement and return type of procedure is Varchar