Jam*_*mes 1 java sql-server stored-procedures hibernate jpa
使用JPA,我正在调用看起来像这样的MS SQL Server 2008 R2存储过程
procedure [dbo].[testProc]
@param1 varchar(max),
@param2 datetime
as
begin
EXEC sessionProc
DECLARE @reportData varbinary(max)
EXEC aThirdPartyProc
@reportData out,
@parameter1 = @param1,
@date = @param2
SELECT col1, col2
FROM fFunction(@reportData)
end
Run Code Online (Sandbox Code Playgroud)
尝试从select语句获取结果时
StoredProcedureQuery q = em.createNamedStoredProcedureQuery("reportData");
q.setParameter("param1", "val1");
q.setParameter("param2", new Date());
return (List<ReportData>) q.getResultList();
Run Code Online (Sandbox Code Playgroud)
我懂了
java.lang.IllegalStateException: Current CallableStatement ou was not a ResultSet, but getResultList was called
at org.hibernate.jpa.internal.StoredProcedureQueryImpl.getResultList(StoredProcedureQueryImpl.java:319)
Run Code Online (Sandbox Code Playgroud)
如何获得选择语句的结果?
注意:如果我将testProc简化为一个简单选择(删除两个EXEC语句),则JPA代码有效。
另外,这是ReportData实体类:
@Entity
@NamedStoredProcedureQuery(name = "reportData", procedureName = "testProc", resultClasses = ReportData.class, parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "param1", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "param2", type = Date.class)
})
public class ReportData {
@Id
private String col1;
private String col2;
// getter and setter for col1 and col2
}
Run Code Online (Sandbox Code Playgroud)
我已经在SQL Server Management Studio中测试了proc,它可以很好地从select语句返回结果。
归档时间: |
|
查看次数: |
3302 次 |
最近记录: |