1

在 Sql server 存储过程中,我使用以下代码从JPA调用时插入语句:

em.createNativeQuery("{call dbo.sp_xxx(:v1,:v2)}");
finQuery.setParameter("v1", 123); 
finQuery.setParameter("v2", "durga");
finQuery.getResultList();

在我的存储过程中

ALTER PROCEDURE [dbo].[sp_xxxx](
@v1 int,
@v2 nvarchar(10)
)
AS

BEGIN TRANSACTION   
BEGIN         

    INSERT INTO dbo.XXXX
           (v1,v2)
        VALUES
           (@v1,@v2)     
COMMIT TRANSACTION 
END 

执行存储过程后

Exception sp_xxxx...javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query.

我能够在 sql server 窗口中运行。来自JPA的 Bur 正在克服错误。

4

3 回答 3

2

代替 getResultList(),尝试 executeUpdate(),它期望 SQL 代码返回更新计数(INSERT/UPDATE/DELETE 操作的结果)。getResultList() 期望 SQL 代码返回结果集(SELECT 操作的结果)

于 2012-09-01T15:59:09.297 回答
1

试试这个代码片段。注意:我使用的是 SQL Server 2005 和 OpenJPA

Query query = entityManager.createNativeQuery("EXEC ps_GeneraSecuenciaClaveCentrales ?, ?, ? ");
query.setParameter(1, "VE");
query.setParameter(2, new Integer(48));
query.setParameter(3, new Integer(42));
String res = (String)query.getSingleResult();
于 2013-02-28T22:46:56.137 回答
0

尝试这个:

finQuery = em.createNativeQuery("exec sp_xxx :v1,:v2");
finQuery.setParameter("v1", 123);
finQuery.setParameter("v2", "durga");
finQuery.getResultList();
于 2013-01-31T16:21:08.037 回答