Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class RawMaterial { // 원재료 데이터베이스
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long rawMaterialId;

@Column(unique = true, nullable = false)
@Column(nullable = false)
private String name;

@Enumerated(EnumType.STRING)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;
import java.util.List;

@Repository
public interface RawMaterialRepository extends JpaRepository<RawMaterial, Long> {
Optional<RawMaterial> findByName(String name);
List<RawMaterial> findByName(String name);
}
Original file line number Diff line number Diff line change
Expand Up @@ -283,24 +283,34 @@ private void saveIngredients(Product product, List<String> ingredientNames) {

for (String ingredientName : ingredientNames) {
if (ingredientName != null && !ingredientName.trim().isEmpty()) {
String trimmedIngredientName = ingredientName.trim();
// 원재료가 이미 존재하는지 확인
RawMaterial rawMaterial = rawMaterialRepository.findByName(ingredientName.trim())
.orElseGet(() -> {
// 새로운 원재료 생성 (기본 카테고리는 OTHERS)
RawMaterial newRawMaterial = RawMaterial.builder()
.name(ingredientName.trim())
.category(RawMaterialCategory.OTHERS)
.build();
return rawMaterialRepository.save(newRawMaterial);
});

// 상품-원재료 관계 생성
ProductRawMaterial productRawMaterial = ProductRawMaterial.builder()
.product(product)
.rawMaterial(rawMaterial)
.build();

productRawMaterialRepository.save(productRawMaterial);
List<RawMaterial> rawMaterials = rawMaterialRepository.findByName(trimmedIngredientName);

if (rawMaterials.isEmpty()) {
// 새로운 원재료 생성 (기본 카테고리는 OTHERS)
RawMaterial newRawMaterial = RawMaterial.builder()
.name(trimmedIngredientName)
.category(RawMaterialCategory.OTHERS)
.build();
rawMaterialRepository.save(newRawMaterial);

// 상품-원재료 관계 생성
ProductRawMaterial productRawMaterial = ProductRawMaterial.builder()
.product(product)
.rawMaterial(newRawMaterial)
.build();
productRawMaterialRepository.save(productRawMaterial);
} else {
// 모든 조회된 원재료에 대해 상품-원재료 관계 생성
for (RawMaterial rawMaterial : rawMaterials) {
ProductRawMaterial productRawMaterial = ProductRawMaterial.builder()
.product(product)
.rawMaterial(rawMaterial)
.build();
productRawMaterialRepository.save(productRawMaterial);
}
}
}
}
}
Expand Down
Loading