fix(store): 아이템, 아이템 옵션 가져오기 쿼리 버그 픽스
- n + 1 querydsl의 distinct가 없어 중복 객체가 전달되던 점 변경
This commit is contained in:
@@ -37,6 +37,7 @@ public class ItemRepositoryCustom {
|
||||
return queryFactory.selectFrom(item)
|
||||
.join(item.itemOptions,itemOption).fetchJoin()
|
||||
.where(item.id.in(itemIds))
|
||||
.distinct()
|
||||
.fetch();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,28 +1,11 @@
|
||||
package com.justpickup.storeservice.domain.itemoption.repository;
|
||||
|
||||
import com.justpickup.storeservice.domain.itemoption.entity.ItemOption;
|
||||
import com.justpickup.storeservice.domain.itemoption.entity.QItemOption;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.justpickup.storeservice.domain.item.entity.QItem.item;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
public class ItemOptionRepositoryCustom {
|
||||
|
||||
private final JPAQueryFactory queryFactory;
|
||||
|
||||
public List<ItemOption> findByItem(Long itemId) {
|
||||
|
||||
return queryFactory.selectFrom(QItemOption.itemOption)
|
||||
.join(QItemOption.itemOption.item)
|
||||
.on(item.id.eq(itemId))
|
||||
.fetch();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,25 +1,4 @@
|
||||
package com.justpickup.storeservice.domain.itemoption.service;
|
||||
|
||||
import com.justpickup.storeservice.domain.item.dto.ItemDto;
|
||||
import com.justpickup.storeservice.domain.itemoption.dto.ItemOptionDto;
|
||||
import com.justpickup.storeservice.domain.itemoption.repository.ItemOptionRepository;
|
||||
import com.justpickup.storeservice.domain.itemoption.repository.ItemOptionRepositoryCustom;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class ItemOptionService {
|
||||
private final ItemOptionRepositoryCustom itemOptionRepositoryCustom;
|
||||
|
||||
public List<ItemOptionDto> getItemOption( ItemDto itemDto){
|
||||
return itemOptionRepositoryCustom.findByItem(itemDto.getId())
|
||||
.stream().map(ItemOptionDto::new)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
public interface ItemOptionService {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.justpickup.storeservice.domain.itemoption.service;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class ItemOptionServiceImpl implements ItemOptionService {
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.justpickup.storeservice.domain.itemoption.web;
|
||||
|
||||
import com.justpickup.storeservice.domain.itemoption.service.ItemOptionService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@@ -7,6 +8,5 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequiredArgsConstructor
|
||||
public class ItemOptionController {
|
||||
|
||||
|
||||
|
||||
private final ItemOptionService itemOptionService;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user