如何在JPA中获取存储过程的结果集?

问题描述:

我有SQL Server 2008和JPA(EclipseLink)应用程序。我需要能够读取存储过程中的行。该存储过程做了一些更新的/ etc但最后返回如何在JPA中获取存储过程的结果集?

select * from @result_table

现在,当我使用访问它在JPA:

String sql = "exec up_GetUpdatedRows ?, ?, ?"; 
entityManager = Factories.getEntityManager(); 

Query query = entityManager.createNativeQuery(sql); 
query.setParameter(1, myKey).setParameter(2, workDate).setParameter(3, createdBy); 

List<Object[]> obj = query.getResultList(); 

我得到以下错误

Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set. 

这适用于其他原生SQL。

任何想法?

谢谢

+1

这似乎与JPA无关。这似乎与底层JDBC驱动程序更相关。检查这个[问题/答案](http://stackoverflow.com/questions/1826271/sqlserverexception-the-statement-did-not-return-a-result-set-when-executing-sql)。此人与您报告相同的问题。也许答案也适用于你。 – 2011-06-08 19:49:58

经过大量的试验和错误,我终于找到了答案。我从另一个问题here发现它。

问题在于未使用SET NOCOUNT ON。由于错误表示没有结果集,所以非常令人困惑。然而,似乎有很多。