spring data jpa : native query
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package com.example.springdatajpa.repository;
|
||||
|
||||
public interface MemberProjection {
|
||||
|
||||
Long getId();
|
||||
String getUsername();
|
||||
String getTeamName();
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user