spring data jpa : named query

This commit is contained in:
haerong22
2021-08-31 23:23:17 +09:00
parent 56c3e04afa
commit abb9a2bb2b
5 changed files with 39 additions and 0 deletions

View File

@@ -8,6 +8,10 @@ import javax.persistence.*;
@Getter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "username", "age"})
@NamedQuery(
name="Member.findByUsername",
query="select m from Member m where m.username = :username"
)
public class Member {
@Id @GeneratedValue

View File

@@ -48,4 +48,10 @@ public class MemberJpaRepository {
.setParameter("age", age)
.getResultList();
}
public List<Member> findByUsername(String username) {
return em.createNamedQuery("Member.findByUsername", Member.class)
.setParameter("username", username)
.getResultList();
}
}

View File

@@ -2,10 +2,15 @@ package com.example.springdatajpa.repository;
import com.example.springdatajpa.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
@Query(name = "Member.findByUsername") // named query 가 있는지 먼저 찾고(domain.methodName) -> query creation
List<Member> findByUsername(@Param("username") String username);
}

View File

@@ -72,4 +72,16 @@ class MemberJpaRepositoryTest {
assertEquals(20, result.get(0).getAge());
assertEquals(1, result.size());
}
@Test
public void testNamedQuery() {
Member m1 = new Member("aaa", 10);
Member m2 = new Member("bbb", 20);
memberJpaRepository.save(m1);
memberJpaRepository.save(m2);
List<Member> result = memberJpaRepository.findByUsername("aaa");
assertEquals(m1, result.get(0));
}
}

View File

@@ -72,4 +72,16 @@ public class MemberRepositoryTest {
assertEquals(20, result.get(0).getAge());
assertEquals(1, result.size());
}
@Test
public void testNamedQuery() {
Member m1 = new Member("aaa", 10);
Member m2 = new Member("bbb", 20);
memberRepository.save(m1);
memberRepository.save(m2);
List<Member> result = memberRepository.findByUsername("aaa");
assertEquals(m1, result.get(0));
}
}