当前位置: 首页 > 知识库问答 >
问题:

Spring Data JPA - 存储过程返回具有非实体的多个结果

曾承弼
2023-03-14

我正在使用spring数据JPA存储库来调用存储过程。就好像在整个应用程序中,我们对存储过程有严格的依赖性一样,我必须使用非实体存储过程调用。以下是我选择的称呼方式:

@Query(value = "EXEC getAllOperation ?,?,?", nativeQuery = true)
Object[][] getAllOperation (@Param("user_details") int userId);

它适用于存储过程返回单个结果集的所有情况。

但是它不适用于返回多个结果集的存储过程。它只返回第一个结果集,不给出任何错误。

在我们的项目中,我们有spring-boot-starter-data-jpa版本1.5.8和hibernate-jpa版本2.1。

我已经为此解决方案经历了几个线程。但是,如果我想仅使用当前的方法实现这一目标,则找不到任何解决方案。

请帮帮我。

共有1个答案

裴嘉许
2023-03-14

一般来说,Spring Data JPA通过在Map中返回存储过程的多个out参数来支持它们(参见https://jira.spring.io/browse/DATAJPA-707)。

不过,我怀疑这是否适用于ResultSets的某些参数

或者,您始终可以创建一个自定义方法,并直接在< code>EntityManager或< code>JdbcTemplate上实现它。

 类似资料:
  • 问题内容: 我需要一个SP来返回多组结果。第二组结果将基于第一组结果的一列。 所以: 如何用我的SP返回@ myTable1和@ myTable2?这种语法完全正确吗? 抱歉,我仍然是SQL的新手… 编辑: 因此,我在下面的代码的最后一行看到错误:“必须声明标量变量“ @ myTable1”” 如果我突出显示并运行代码直到第二个代码,它就可以正常工作。 EDIT2: 解决了该问题。谢谢你们。 问题

  • 问题内容: 我试图从存储过程中获取简单的输出 和我的MVC 但是当我编译时,在以下部分出现错误: 方法’sp_getrandomnumber’的重载没有接受1个参数 名称“ randoms”在当前上下文中不存在 提前非常感谢希什 问题答案: 您的问题是您的SPROC输出是一个int。 请参见Scott Gu的文章中的以下引用。 “ LINQ to SQL将SPROC中的“ out”参数映射为参考参

  • 问题内容: 我有一个存储过程,它检查用户是否已经存在,无论用于电子邮件的输入是什么,它随数据库的第一行一起返回。如果我手动运行select语句,我将得到正确的结果。有什么建议吗? 问题答案: 您的问题无疑在这里: 白衣 您的参数名称与列名称相同。这 可 实际工作,但规则使它这样做可能是怪异。(我认为,如果您更改引号,它可能会起作用)。 但是实际上,您应该做的是将参数重命名为其他名称:

  • 问题内容: 我已经创建了这个并且尝试使用实体框架来调用它。下面是用C#编写的代码。 在所有情况下都返回。请让我知道错误。 编辑 -根据给定的答案,不使用存储过程的return语句,因为Entity Framework不支持开箱即用的存储过程返回标量值。让我知道如何从中发送标量数据? 问题答案: 您的存储过程当前返回 标 量值。使用以下步骤来解决此问题: 像这样更改您的存储过程(不要在存储过程中使用

  • 问题内容: 我正在使用Spring的JdbcTemplate和StoredProcedure类。我无法让存储过程类为我工作。 我在oracle数据库上有一个存储过程。它的签名是 哪里 我创建了以下存储过程类以从oracle过程获取信息 我在我的一个DAO类中的一种方法中调用此方法 但是,地图的大小始终为0,因此没有任何结果。我知道数据库中有符合我输入条件的行。我也有用于与oracle存储的proc

  • 我有一个存储过程,它接受参数并返回一个长值。 我如何使用jdbcTemplate来调用这个存储过程并获得返回的值。 这样对吗?