스프링 데이터 JPA 최신버전에 생긴 기능
실무에서 사용하기 애매하다.
@Test
public void queryByExample() {
Team teamA = new Team("teamA");
em.persist(teamA);
Member m1 = new Member("m1", 0, teamA);
Member m2 = new Member("m2", 0, teamA);
em.persist(m1);
em.persist(m2);
em.flush();
em.clear();
Member member = new Member("m1");
Example<Member> example = Example.of(member);
List<Member> result = memberRepository.findAll(example);
assertThat(result.size()).isEqualTo(1);
assertThat(result.get(0).getUsername()).isEqualTo("m1");
}
@Test
public void queryByExample() {
Team teamA = new Team("teamA");
em.persist(teamA);
Member m1 = new Member("m1", 10, teamA);
Member m2 = new Member("m2", 20, teamA);
em.persist(m1);
em.persist(m2);
em.flush();
em.clear();
Member member = new Member("m1");
ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnorePaths("age");
Example<Member> example = Example.of(member, matcher);
List<Member> result = memberRepository.findAll(example);
assertThat(result.size()).isEqualTo(1);
assertThat(result.get(0).getUsername()).isEqualTo("m1");
}
영한님은 이러한 기술을 볼 때 조인이 해결 되는지 보면 쓸만한지 알 수 있다.
m1 이면서 팀이 teamA 인 멤버를 조회해 보자.
@Test
public void queryByExample() {
Team teamA = new Team("teamA");
em.persist(teamA);
Member m1 = new Member("m1", 10, teamA);
Member m2 = new Member("m2", 20, teamA);
em.persist(m1);
em.persist(m2);
em.flush();
em.clear();
Member member = new Member("m1");
Team team = new Team("teamA");
member.setTeam(team);
ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnorePaths("age");
Example<Member> example = Example.of(member, matcher);
List<Member> result = memberRepository.findAll(example);
assertThat(result.size()).isEqualTo(1);
assertThat(result.get(0).getUsername()).isEqualTo("m1");
}