diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/AnimalCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/AnimalCoreService.java index b6f74997..bf72b375 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/AnimalCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/AnimalCoreService.java @@ -2,7 +2,9 @@ package com.kamco.cd.kamcoback.postgres.core; import com.kamco.cd.kamcoback.common.service.BaseCoreService; import com.kamco.cd.kamcoback.postgres.entity.AnimalEntity; +import com.kamco.cd.kamcoback.postgres.entity.ZooEntity; import com.kamco.cd.kamcoback.postgres.repository.AnimalRepository; +import com.kamco.cd.kamcoback.postgres.repository.ZooRepository; import com.kamco.cd.kamcoback.zoo.dto.AnimalDto; import jakarta.persistence.EntityNotFoundException; import lombok.RequiredArgsConstructor; @@ -17,6 +19,7 @@ public class AnimalCoreService implements BaseCoreService { private final AnimalRepository animalRepository; + private final ZooRepository zooRepository; @Transactional(readOnly = true) public AnimalDto.Basic getDataByUuid(String uuid) { @@ -33,7 +36,18 @@ public class AnimalCoreService // AddReq를 받는 추가 메서드 @Transactional public AnimalDto.Basic create(AnimalDto.AddReq req) { - AnimalEntity entity = new AnimalEntity(req.getCategory(), req.getSpecies(), req.getName()); + ZooEntity zoo = null; + if (req.getZooId() != null) { + zoo = + zooRepository + .getZooByUid(req.getZooId()) + .orElseThrow( + () -> + new EntityNotFoundException( + "Zoo not found with id: " + req.getZooId())); + } + AnimalEntity entity = + new AnimalEntity(req.getCategory(), req.getSpecies(), req.getName(), zoo); AnimalEntity saved = animalRepository.save(entity); return saved.toDto(); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/AnimalEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/AnimalEntity.java index 71c58fda..8844d135 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/AnimalEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/AnimalEntity.java @@ -8,9 +8,12 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import java.util.UUID; import lombok.AccessLevel; @@ -41,13 +44,18 @@ public class AnimalEntity extends CommonDateEntity { private String name; private Boolean isDeleted; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "zoo_id") + private ZooEntity zoo; + // Construct - public AnimalEntity(Category category, Species species, String name) { + public AnimalEntity(Category category, Species species, String name, ZooEntity zoo) { this.uuid = UUID.randomUUID(); this.category = category; this.species = species; this.name = name; this.isDeleted = false; + this.zoo = zoo; } public AnimalDto.Basic toDto() { diff --git a/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java b/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java index 79dcf7bb..335079b1 100644 --- a/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/zoo/dto/AnimalDto.java @@ -23,6 +23,7 @@ public class AnimalDto { private Category category; private Species species; private String name; + private Long zooId; // 동물원 ID (선택) } @Getter