java 如何从休眠(SQL SERVER)中的存储过程获取输出值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17110885/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get OUTPUT value from stored procedure in hibernate (SQL SERVER)
提问by Constantine Gladky
I have stored procedure in MS SQL Server
我有存储过程 MS SQL Server
CREATE PROC dbo.insertData
@param1 nvarchar(11),
@param2 nvarchar(30),
@ID bigint OUTPUT
AS
BEGIN
INSERT INTO dbo.Adaptor (Col1, Col2) VALUES (@param1, @param2)
SET @ID = SCOPE_IDENTITY();
END
And I want to get this generated ID as output parameter in java.
我想把这个生成的 ID 作为 java 中的输出参数。
I have created a mapping file
我已经创建了一个映射文件
<sql-query name="insertData" callable="true">
<return alias="adaptor" class="MyClass">
<return-property name="id" column="ID" />
</return>
{ ? = call InsertData(:param1, :param2) }
</sql-query>
and trying to execute it from java
并尝试从 java 执行它
Query query = entityManager.createNamedQuery("insertData");
query.setParameter("param1", object);
query.setParameter("param2", getName());
// TODO try to use getSingleResult in tests
List result = query.getResultList();
But I have exception java.sql.SQLException: Parameter #3 has not been set
但我有异常 java.sql.SQLException: Parameter #3 has not been set
If I remove ? = I got
如果我删除 ? = 我得到了
java.sql.SQLException: Procedure or function 'insertData' expects parameter '@ID', which was not supplied.
java.sql.SQLException:过程或函数“insertData”需要未提供的参数“@ID”。
Has anyone any idea how code/mapping file should look like? Thanks in advance
有谁知道代码/映射文件应该是什么样子?提前致谢