From 35872cb977847773581837d16136fa569fbe8722 Mon Sep 17 00:00:00 2001 From: bum12ark Date: Thu, 17 Mar 2022 15:14:31 +0900 Subject: [PATCH] =?UTF-8?q?fix(store):=20store=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=20=EC=97=B0=EA=B4=80=EA=B4=80=EA=B3=84=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=A0=95?= =?UTF-8?q?=ED=95=A9=EC=84=B1=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 연관관계 메소드 리스트에 같은 데이터가 두번 들어가는 문제점 해결 - 테스트 데이터 정합성 문제 해결 --- .../domain/category/entity/Category.java | 4 +-- .../storeservice/domain/item/entity/Item.java | 2 -- .../domain/itemoption/entity/ItemOption.java | 2 +- .../domain/store/entity/Store.java | 6 ++-- .../global/SqlCommandLineRunner.java | 30 +++++++++++-------- 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java b/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java index 5995383..cd13af4 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java @@ -8,6 +8,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; +import java.util.ArrayList; import java.util.List; import static javax.persistence.FetchType.LAZY; @@ -31,12 +32,11 @@ public class Category extends BaseEntity { private Store store; @OneToMany(mappedBy = "category", cascade = CascadeType.ALL) - private List items; + private List items = new ArrayList<>(); // == 연관관계 편의 메소드 == // public void setStore(Store store) { this.store = store; - store.getCategories().add(this); } public void addItem(Item item) { diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/entity/Item.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/entity/Item.java index 4d2f177..c7b4b14 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/item/entity/Item.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/entity/Item.java @@ -54,12 +54,10 @@ public class Item extends BaseEntity { public void setStore(Store store) { this.store = store; - store.getItems().add(this); } public void setCategory(Category category) { this.category = category; - category.getItems().add(this); } public void setItemNameAndPriceAndCategory(String name , Long price,Category category){ diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java index 8b03e34..b524382 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java @@ -24,7 +24,7 @@ public class ItemOption extends BaseEntity { private String name; - @ManyToOne(fetch = LAZY , cascade = CascadeType.ALL) + @ManyToOne(fetch = LAZY ) @JoinColumn(name = "item_id") private Item item; diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/entity/Store.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/entity/Store.java index 58fc886..cfb1862 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/entity/Store.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/entity/Store.java @@ -48,13 +48,13 @@ public class Store extends BaseEntity { //== user-service.user pk ==// private Long userId; - @OneToMany(mappedBy = "store") + @OneToMany(mappedBy = "store", cascade = CascadeType.ALL) private List categories = new ArrayList<>(); - @OneToMany(mappedBy = "store") + @OneToMany(mappedBy = "store", cascade = CascadeType.ALL) private List items = new ArrayList<>(); - @OneToMany(mappedBy = "store") + @OneToMany(mappedBy = "store", cascade = CascadeType.ALL) private List favoriteStores = new ArrayList<>(); // == 연관관계 편의 메소드 == // diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java b/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java index f2c51fe..58e552d 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java +++ b/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java @@ -22,11 +22,10 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; -//@Component +@Component @RequiredArgsConstructor @Slf4j public class SqlCommandLineRunner implements CommandLineRunner { @@ -105,17 +104,14 @@ public class SqlCommandLineRunner implements CommandLineRunner { Category 디카페인 = categoryRepository.save(Category.of("디카페인", 1, store)); Category 티 = categoryRepository.save(Category.of("티", 2, store)); - ItemOption ice = ItemOption.of(OptionType.REQUIRED, "ICE"); - ItemOption hot = ItemOption.of(OptionType.REQUIRED, "HOT"); - - Item 아메리카노 = Item.of("아메리카노", 1500L, 카페인, store, List.of(ice, hot)); - Item 카페라떼 = Item.of("카페라떼", 2000L, 카페인, store, List.of(ice, hot)); - Item 카페모카 = Item.of("카페모카", 3900L, 카페인, store, List.of(ice, hot)); - Item 콜드브루 = Item.of("콜드브루", 2500L, 카페인, store, List.of(ice)); - Item 녹차라떼 = Item.of("녹차라떼", 3000L, 디카페인, store, List.of(ice, hot)); - Item 딸기라떼 = Item.of("딸기라떼", 3000L, 디카페인, store, List.of(ice, hot)); - Item 녹차 = Item.of("녹차", 3000L, 티, store, List.of(hot)); - Item 히비스커스 = Item.of("히비스커스 티", 3000L, 티, store, List.of(hot)); + Item 아메리카노 = Item.of("아메리카노", 1500L, 카페인, store, List.of(getIceOption(), getHotOption())); + Item 카페라떼 = Item.of("카페라떼", 2000L, 카페인, store, List.of(getIceOption(), getHotOption())); + Item 카페모카 = Item.of("카페모카", 3900L, 카페인, store, List.of(getIceOption(), getHotOption())); + Item 콜드브루 = Item.of("콜드브루", 2500L, 카페인, store, List.of(getIceOption())); + Item 녹차라떼 = Item.of("녹차라떼", 3000L, 디카페인, store, List.of(getIceOption(), getHotOption())); + Item 딸기라떼 = Item.of("딸기라떼", 3000L, 디카페인, store, List.of(getIceOption(), getHotOption())); + Item 녹차 = Item.of("녹차", 3000L, 티, store, List.of(getHotOption())); + Item 히비스커스 = Item.of("히비스커스 티", 3000L, 티, store, List.of(getIceOption(), getHotOption())); List items = List.of(아메리카노, 카페라떼, 카페모카, 콜드브루, 녹차라떼, 딸기라떼, 녹차, 히비스커스); itemRepository.saveAll(items); @@ -124,6 +120,14 @@ public class SqlCommandLineRunner implements CommandLineRunner { }); } + private ItemOption getIceOption() { + return ItemOption.of(OptionType.REQUIRED, "ICE"); + } + + private ItemOption getHotOption() { + return ItemOption.of(OptionType.REQUIRED, "HOT"); + } + void createFavoriteStore(FavoriteStoreRepository favoriteStoreRepository, List stores) { List userList = List.of(1L,2L,3L,4L,5L,6L,7L); userList.forEach(userId -> stores.forEach(store -> favoriteStoreRepository.save(FavoriteStore.of(userId, store))));