spring data jpa : native query

This commit is contained in:
haerong22
2021-09-04 00:05:30 +09:00
parent 0260422403
commit 8d49cb0106
3 changed files with 44 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
package com.example.springdatajpa.repository;
public interface MemberProjection {
Long getId();
String getUsername();
String getTeamName();
}

View File

@@ -72,4 +72,12 @@ public interface MemberRepository extends JpaRepository<Member, Long>, MemberRep
// List<UsernameOnlyDto> findProjectionsByUsername(@Param("username") String username);
<T> List<T> findProjectionsByUsername(@Param("username") String username, Class<T> type);
@Query(value = "select * from member where username = ?", nativeQuery = true)
Member findByNativeQuery(String username);
@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);
}

View File

@@ -383,5 +383,33 @@ public class MemberRepositoryTest {
System.out.println("nestedClosedProjections.getTeam().getName() = " + nestedClosedProjection.getTeam().getName());
}
}
@Test
void nativeQuery() {
// given
Team teamA = new Team("teamA");
em.persist(teamA);
Member member1 = new Member("member1", 0, teamA);
Member member2 = new Member("member2", 0, teamA);
em.persist(member1);
em.persist(member2);
em.flush();
em.clear();
// when
Member result = memberRepository.findByNativeQuery("member1");
System.out.println("result = " + result);
Page<MemberProjection> results = memberRepository.findByNativeProjection(PageRequest.of(0, 10));
List<MemberProjection> content = results.getContent();
for (MemberProjection memberProjection : content) {
System.out.println("memberProjection.getUsername() = " + memberProjection.getUsername());
System.out.println("memberProjection.getTeamName() = " + memberProjection.getTeamName());
}
}
}