【发布时间】:2013-06-11 05:52:01
【问题描述】:
我在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
我想在java中获取这个生成的ID作为输出参数。
我已经创建了一个映射文件
<sql-query name="insertData" callable="true">
<return alias="adaptor" class="MyClass">
<return-property name="id" column="ID" />
</return>
{ ? = call InsertData(:param1, :param2) }
</sql-query>
并尝试从 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();
但是我有异常 java.sql.SQLException: Parameter #3 has not been set
如果我删除 ? = 我明白了
java.sql.SQLException:过程或函数“insertData”需要参数“@ID”,但未提供该参数。
有人知道代码/映射文件应该是什么样子吗?提前致谢
【问题讨论】:
-
不,我在获取 sproc 中为 OUTPUT 的文件的值时遇到问题。如何执行我在问题中展示的存储过程
标签: java sql-server hibernate stored-procedures