如何通过使用Spring Data调用存储过程来选择实体 [英] How to select entities by calling a strored procedure with Spring Data
问题描述
假设我有一个MySQL存储过程,它包含以下select:
select * from users;
如何使用 @Procedure
注释一个 JpaRepository
以便我可以得到结果?例如:
public UserRepository extenda JpaRepository< User,Long> {
@Procedure('get_users')
列表<用户> getUsers();
假设这是您的程序:
$ b $ pre $ CREATE OR REPLACE PROCEDURE get_users(data out SYS_REFCURSOR)
AS
BEGIN
OPEN数据FOR SELECT * FROM USERS;
END;
您定义了一个 @NamedStoredProcedureQuery
:< @
@NamedStoredProcedureQuery(
name =getUsers,
procedureName =get_users,
resultClass = User.class,参数= {
@StoredProcedureParameter(queryParameter =data,name =data,direction = Direction.OUT_CURSOR)
}
)
@Entity
public class User {
...
}
然后你可以这样调用你的过程: 你也可以使用你的EntityManager来检查: Let's say I have a MySQL stored procedure that contains the following select: How to use the
Let's say this is your procedure: You define a And then you can call your procedure like this: You can also check this using your EntityManager like this:
这篇关于如何通过使用Spring Data调用存储过程来选择实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
$ b $ pre $ public UserRepository扩展JpaRepository< User,Long> {
@Procedure(' User.getUsers')
List< User> getUsers();
$ / code>
查询查询= entitymanager.createNamedQuery(getUsers);
List users = query.getResultList();
select * from users;
@Procedure
annotation in a JpaRepository
so that I can get the results? Something like:public UserRepository extenda JpaRepository<User, Long>{
@Procedure('get_users')
List<User> getUsers();
}
CREATE OR REPLACE PROCEDURE get_users(data out SYS_REFCURSOR)
AS
BEGIN
OPEN data FOR 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();
}
Query query = entitymanager.createNamedQuery("getUsers");
List users = query.getResultList();