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

如何通过使用Spring数据调用存储过程来选择实体

姬阳曜
2023-03-14

假设我有一个MySQL存储过程,其中包含以下选择:

select * from users;

如何在JpaRepository中使用@Procedure注释,以便我可以获得结果?像这样:

public UserRepository extenda JpaRepository<User, Long>{
    @Procedure('get_users')
    List<User> getUsers();
}

共有1个答案

艾浩广
2023-03-14

假设这是您的程序:

CREATE PROCEDURE get_users()
BEGIN
    SELECT * FROM USERS;
END

定义@NamedStoredProcedureQuery

@NamedStoredProcedureQuery(
    name="getUsers", 
    procedureName="get_users", 
    resultClass=User.class, parameters={
        @StoredProcedureParameter(queryParameter="data", name="data", direction=Direction.OUT_CURSOR)
    }
)
@Entity
public class User {
    ...
}

然后你可以像这样调用你的过程:

public UserRepository extends JpaRepository<User, Long>{
    @Procedure('User.getUsers')
    List<User> getUsers();
}

您还可以使用EntityManager进行检查,如下所示:

Query query = entitymanager.createNamedQuery("getUsers");
List users = query.getResultList();
 类似资料:
  • 问题内容: 假设我有一个MySQL存储过程,其中包含以下选择: 如何在中使用注释,以便获得结果?就像是: 问题答案: 假设这是您的过程: 您定义一个: 然后您可以像这样调用过程: 您也可以使用EntityManager进行检查,如下所示:

  • 我想知道是否可以使用Spring数据JPA调用存储过程,它具有resultset和multiple out参数。 我发现了相同https://github.com/spring-projects/spring-data-examples/issues/80的Git问题 如果问题解决了,有人能举一个Spring Boot的例子吗?

  • 我正在尝试使用JPA调用一个Firebird可选过程。该方法如下所示: 是否可以使用JPA调用firebird选择过程? 如果方法中有,为什么“找不到命名查询”?

  • 问题内容: 我正在处理一个查询(一个SELECT),我需要将此查询的结果插入表中。在进行插入之前,我需要做一些检查,如果所有列都有效,我将进行插入。 该检查是在存储过程中完成的。在其他地方也使用相同的过程。因此,我正在考虑使用相同的过程进行检查。 程序进行检查并插入值都可以。 我试图在SELECT内调用该过程,但是它不起作用。 这种代码不起作用。 我认为可以使用游标完成此操作,但我想避免使用游标。

  • 下面是我的Oracle存储过程, 我得到以下异常:hibernate:{CALL REPORT_HIBERNATE(?)}org.hibernate.exception.GenericJDBcException:无法执行查询...并且由:java.sql.sqlException:无效的列索引引起 Plz让我知道在Spring中我将如何使用Hibernate注释调用这个存储过程??

  • 问题内容: 我有一个需要很多参数的插入存储过程-其中2个是@ FirstName,@ LastName。我还有一个更新存储过程,该过程需要许多参数-其中2个是@ FirstName,@ LastName。 我想做的是,从插入SP内部完成之后,调用更新SP并将其发送给@ FirstName,@ LastName。 我不知道这样做的正确语法;我试过了: 但我认为这是错误的。 有人可以告诉我怎么写这个电