작성
·
388
1
안녕하세요 영한님
답변 1
0
안녕하세요
우선 영한님의 강의를 토대로
from절에서의 subquery는 안된다는 전제하에
쿼리를 2번 나눠서 실행하였습니다.
(참고로 mysql 기준입니다.)
혹시 다른 방법이 있다면 답변 부탁드립니다
- 기존소스
@Test
public void updateSubquery() {
Team team = new Team("teamA");
em.persist(team);
Member newMember = new Member("user1");
newMember.setTeam(team);
em.persist(newMember);
QMember subM = new QMember("subM");
QTeam subT = new QTeam("subT");
long result = queryFactory
.update(member)
.set(member.age, member.age.add(10))
.where(member.id.in(
JPAExpressions.select(subM.id)
.from(subM)
.join(subM.team, subT)
.where(subT.name.eq("teamA"))
))
.execute();
assertThat(result).isEqualTo(1);
}
- 수정한 소스
@Test
public void updateSubquery() {
Team team = new Team("teamA");
em.persist(team);
Member newMember = new Member("user1");
newMember.setTeam(team);
em.persist(newMember);
QMember subM = new QMember("subM");
QTeam subT = new QTeam("subT");
List<Integer> list = queryFactory
.select(subM.id)
.from(subM)
.join(subM.team, subT)
.where(subT.name.eq("teamA"))
)).fetch();
long result = queryFactory
.update(member)
.set(member.age, member.age.add(10))
.where(member.id.in(
list
))
.execute();
assertThat(result).isEqualTo(1);
}
안녕하세요. Kedric Kim님
저도 다른 방법은 딱 떠오르지 않네요.
혹시 더 나은 방안을 아시는 분 있으면 답변 부탁드려요.
감사합니다.