작성
·
1.6K
0
안녕하세요 강사님 .
복습하면서 여쭤보고 싶은점이 생겨서 글을 남깁니다.
@BeforeEach
public void before()
{
Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
em.persist(teamA);
em.persist(teamB);
Member member1 = new Member("member1", 10, teamA);
Member member2 = new Member("member2", 20, teamA);
Member member3 = new Member("member3", 30, teamB);
Member member4 = new Member("member4", 40, teamB);
em.persist(member1);
em.persist(member2);
em.persist(member3);
em.persist(member4);
}
처럼 기본으로 데이터에서
@Test
public void searchAndParam()
{
JPAQueryFactory queryFactory = new JPAQueryFactory(em);
Member findMember = queryFactory
.selectFrom(member)
.where(
member.username.eq("member1"),
member.age.eq(10)
.or(member.age.eq(20))
)
.fetchOne();
Assertions.assertThat(findMember.getUsername()).isEqualTo("member1");
}
제가 하고 싶었던 것은 이름이 member1이면서 나이가 10살이거나 // 나이가 20살인 사람을 선택하려고 했습니다.
//member member0_ where member0_.username='member1' and (member0_.age=10 or member0_.age=20);
아쉽게도 생각과 다르게 나왔습니다. 아직 배우는 입장이다보니 어떻게짜면 원하는 결과를 얻을 수 있는지 모르겠네요.
벌써 querydsl까지 왔습니다. 덕분에 좋은 강의 정말 잘 듣고있습니다. 감사합니다!.
답변 2
1
질문이 모호했던것 같습니다.
( 이름이 member1이면서 나이가 10살인 사람들) or (그냥 오로지 나이가 20살인 사람들) 을 찾을 방법을 여쭤본다는게
질문이 이상했습니다. 괄호로 묶고 or했더니 잘 작동하네요
그리고 덕분에 in절 활용해서 좀 더 간결하게 코드를 짤 수 있는 연습을 할 수 있었습니다. 감사합니다!
1
안녕하세요. 남기석님^^
(member.username.eq("member1"), member.age.in(10,20)) 이렇게 하시면 될꺼에요^^
혹시 안되시면 답글 남겨주세요^^!
막판까지 화이팅입니다!