使用javax或eclipse链接@NamedStoredProcedureQuery
,我想调用一个没有游标或out参数的sql server存储过程,并返回结果集而不必手动映射结果。
当我使用spring @Procedure
时,会自动添加一个OUT参数,我从数据库中收到错误消息,说我有太多参数,这是有道理的。如果我不这样做,我只能返回无效但无法获得结果。
有没有办法避免所有锅炉板代码映射参数然后手动映射结果集?由于共享存储过程,我的能力有限。
我正在寻找一些示例,说明如何使用实体为没有OUT参数或Cursor的存储过程映射结果。 (我怀疑这是不可能的,但我希望听到那些使用这些的时间超过我(2天)的人)
PS我已经看到使用Oracle完成了这项工作,但是,他们定义了一个out参数。
ALTER PROCEDURE [dbo].[spGetInstitution]
-- Add the parameters for the stored procedure here
@InstitutionID INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT
a.InstitutionID,
a.DisplayName
FROM tblInstitution a
WHERE a.InstitutionID = @InstitutionID
END
答案 0 :(得分:1)
您是否看过StoredProcedureQuery的文档?如果您的过程返回结果集,那么如果在创建查询时指定了resultClasses或resultSetMappings,则getResultList将起作用(如果需要)。
类似的东西:
StoredProcedureQuery query = em.createStoredProcedureQuery("spGetInstitution", Institution.class);
query.registerStoredProcedureParameter("InstitutionID", Integer.class, ParameterMode.IN);
query.setParameter("InstitutionID", institutionID);
boolean result = query.execute();
assertTrue("Result did not return true for a result set.", result);
List<Institution> institutionResults = query.getResultList();