dev/spring data JPA

네이티브 쿼리

dev_0hoon 2024. 3. 7. 16:52

어쩔 수 없는 상황이 아니라면 가급적 사용하지 않는 것이 좋음

 

사용 법은 단순하다.

    @Query(value = "select * from member where username = ?" , nativeQuery = true)
    Member findByNativeQuery(String username);

 

@Query에 nativeQuery를 true로 주면 끝이다.

 

 

 

 

 

프로젝션과 함께 사용하기

package study.datajpa.repository;

public interface MemberProjection {

    Long getId();
    String getUsername();
    String getTeamName();
}

 

    @Query(value="select m.member_id as id, m.username, t.name as teamName from member m " +
            "left join team t", countQuery = "select count(*) from member ", nativeQuery = true)
    Page<MemberProjection> findByNativeProjection(Pageable pageable);
        //when
        Page<MemberProjection> result = memberRepository.findByNativeProjection(PageRequest.of(0, 10));
        List<MemberProjection> content = result.getContent();

 

 

 

동적 네이티브 쿼리 사용방식