How to select entities by calling a stored procedure with Spring Data

前端 未结 1 710
难免孤独
难免孤独 2021-01-03 04:31

Let\'s say I have a MySQL stored procedure that contains the following select:

select * from users;

How to use the @Procedure

相关标签:
1条回答
  • 2021-01-03 04:59

    Let's say this is your procedure:

    CREATE OR REPLACE PROCEDURE get_users(data out SYS_REFCURSOR)
    AS
    BEGIN
    OPEN data FOR SELECT * FROM USERS;
    END;
    

    You define a @NamedStoredProcedureQuery:

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

    And then you can call your procedure like this:

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

    You can also check this using your EntityManager like this:

    Query query = entitymanager.createNamedQuery("getUsers");
    List users = query.getResultList();
    
    0 讨论(0)
提交回复
热议问题