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);
|
// List<UsernameOnlyDto> findProjectionsByUsername(@Param("username") String username);
|
||||||
<T> List<T> findProjectionsByUsername(@Param("username") String username, Class<T> type);
|
<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());
|
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