인프런 커뮤니티 질문&답변

남기석님의 프로필 이미지
남기석

작성한 질문수

실전! Querydsl

where 절에서 or 을 어떻게 사용하면 되는 지 여쭤보고 싶습니다.

작성

·

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)) 이렇게 하시면 될꺼에요^^

혹시 안되시면 답글 남겨주세요^^!

막판까지 화이팅입니다!

남기석님의 프로필 이미지
남기석

작성한 질문수

질문하기