1

Sqlサーバーストアドプロシージャでは、以下のコードを使用して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.

Iam は、SQL Server ウィンドウで実行できます。JPA iamからのバーが上記のエラーを取得しています。

4

3 に答える 3

2

getResultList() の代わりに、SQL コードが更新カウント (INSERT/UPDATE/DELETE 操作の結果) を返すことを期待する executeUpdate() を試してください。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 に答える