복붙노트

[SPRING] Spring 데이터로 저장 프로 시저를 호출하여 엔티티를 선택하는 방법

SPRING

Spring 데이터로 저장 프로 시저를 호출하여 엔티티를 선택하는 방법

다음 선택을 포함하는 MySQL 저장 프로 시저가 있다고 가정 해 보겠습니다.

select * from users;

JpaRepository에서 @Procedure 주석을 사용하여 결과를 얻을 수있는 방법은 무엇입니까? 같은 것 :

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

해결법

  1. ==============================

    1.이것이 귀하의 절차라고 가정 해 보겠습니다.

    이것이 귀하의 절차라고 가정 해 보겠습니다.

    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();
    }
    

    다음과 같이 EntityManager를 사용하여이를 확인할 수도 있습니다.

    Query query = entitymanager.createNamedQuery("getUsers");
    List users = query.getResultList();
    
  2. from https://stackoverflow.com/questions/30578089/how-to-select-entities-by-calling-a-stored-procedure-with-spring-data by cc-by-sa and MIT license