diff --git a/.gitignore b/.gitignore index e13f090d..624bc669 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ out/ /.nb-gradle/ application.yml +/.gradle diff --git a/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/entity/ResourceGroupImage.java b/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/entity/ResourceGroupImage.java new file mode 100644 index 00000000..0bac3e7e --- /dev/null +++ b/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/entity/ResourceGroupImage.java @@ -0,0 +1,38 @@ +package DGU_AI_LAB.admin_be.domain.resourceGroupImages.entity; + +import DGU_AI_LAB.admin_be.domain.containerImage.entity.ContainerImage; +import DGU_AI_LAB.admin_be.domain.resourceGroups.entity.ResourceGroup; +import DGU_AI_LAB.admin_be.global.common.BaseTimeEntity; +import jakarta.persistence.*; +import lombok.*; + +@Entity +@Table(name = "resource_group_images") +@Access(AccessType.FIELD) +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +@Builder +@EqualsAndHashCode(of = "id") +public class ResourceGroupImage extends BaseTimeEntity { + + @EmbeddedId + private ResourceGroupImageId id; + + @ManyToOne(fetch = FetchType.LAZY) + @MapsId("rsgroupId") + @JoinColumn(name = "rsgroup_id", nullable = false) + private ResourceGroup resourceGroup; + + @ManyToOne(fetch = FetchType.LAZY) + @MapsId("imageId") + @JoinColumn(name = "image_id", nullable = false) + private ContainerImage containerImage; + + @PrePersist + void onCreate() { + if (id == null && resourceGroup != null && containerImage != null) { + id = new ResourceGroupImageId(resourceGroup.getRsgroupId(), containerImage.getImageId()); + } + } +} \ No newline at end of file diff --git a/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/entity/ResourceGroupImageId.java b/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/entity/ResourceGroupImageId.java new file mode 100644 index 00000000..93d17128 --- /dev/null +++ b/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/entity/ResourceGroupImageId.java @@ -0,0 +1,24 @@ +package DGU_AI_LAB.admin_be.domain.resourceGroupImages.entity; + +import jakarta.persistence.Access; +import jakarta.persistence.AccessType; +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import lombok.*; + +import java.io.Serializable; + +@Embeddable +@Access(AccessType.FIELD) +@Getter +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode +public class ResourceGroupImageId implements Serializable { + + @Column(name = "rsgroup_id") + private Integer rsgroupId; + + @Column(name = "image_id") + private Long imageId; +} \ No newline at end of file diff --git a/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/repository/ResourceGroupImageRepository.java b/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/repository/ResourceGroupImageRepository.java new file mode 100644 index 00000000..1b494ae4 --- /dev/null +++ b/src/main/java/DGU_AI_LAB/admin_be/domain/resourceGroupImages/repository/ResourceGroupImageRepository.java @@ -0,0 +1,20 @@ +package DGU_AI_LAB.admin_be.domain.resourceGroupImages.repository; + +import DGU_AI_LAB.admin_be.domain.resourceGroupImages.entity.ResourceGroupImage; +import DGU_AI_LAB.admin_be.domain.resourceGroupImages.entity.ResourceGroupImageId; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ResourceGroupImageRepository extends JpaRepository { + + @Query("SELECT rgi FROM ResourceGroupImage rgi WHERE rgi.resourceGroup.rsgroupId = :rsgroupId") + List findByResourceGroupId(@Param("rsgroupId") Integer rsgroupId); + + @Query("SELECT rgi FROM ResourceGroupImage rgi WHERE rgi.containerImage.imageId = :imageId") + List findByContainerImageId(@Param("imageId") Long imageId); +} \ No newline at end of file