From 9725a19b3573c6a0d22cc486e9c7aabd756b1056 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Thu, 21 May 2026 09:51:38 +0900 Subject: [PATCH] =?UTF-8?q?-=20K8sUtil=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20-=20=EC=8A=B9=EC=9D=B8=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=99=84=EC=A0=84=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20DJBank=EB=A1=9C=20=EB=AA=85=EC=B9=AD?= =?UTF-8?q?=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +++ .../eactive/apim/portal/approval/entity/Approver.java | 9 +++++---- .../portal/approval/statemachine/ProcessingState.java | 4 ++-- .../portal/approval/statemachine/RequestedState.java | 6 +++--- .../portal/file/service/FileSystemBinaryStorage.java | 1 + .../java/com/eactive/apim/portal/qna/entity/Inquiry.java | 3 ++- .../apim/portal/template/service/MessageRecipient.java | 3 --- 7 files changed, 16 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index 6df5fe6..a91f172 100644 --- a/build.gradle +++ b/build.gradle @@ -87,6 +87,9 @@ dependencies { api "com.querydsl:querydsl-apt:${queryDslVersion}" api "org.mapstruct:mapstruct:1.5.5.Final", "org.projectlombok:lombok:1.18.28" + // JDK 11+ 에서 javax.annotation.* 가 제거되어 (JEP 320) 명시 의존성 필요 + api 'javax.annotation:javax.annotation-api:1.3.2' + // project > properties > Java Compiler > Annoation Processing annotationProcessor "org.projectlombok:lombok:1.18.28", "org.projectlombok:lombok-mapstruct-binding:0.2.0", "org.mapstruct:mapstruct-processor:1.5.5.Final", "com.querydsl:querydsl-apt:${queryDslVersion}:jpa", "jakarta.persistence:jakarta.persistence-api:2.2.3", "jakarta.annotation:jakarta.annotation-api:1.3.5" diff --git a/src/main/java/com/eactive/apim/portal/approval/entity/Approver.java b/src/main/java/com/eactive/apim/portal/approval/entity/Approver.java index 312acd3..6033e06 100644 --- a/src/main/java/com/eactive/apim/portal/approval/entity/Approver.java +++ b/src/main/java/com/eactive/apim/portal/approval/entity/Approver.java @@ -5,9 +5,10 @@ import com.eactive.eai.data.converter.LocalDateTimeToStringConverter17; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import org.hibernate.annotations.NotFound; +import org.hibernate.annotations.NotFoundAction; import javax.persistence.*; -import javax.validation.constraints.NotNull; import java.io.Serializable; import java.time.LocalDateTime; @@ -25,12 +26,12 @@ public class Approver implements Serializable, com.eactive.eai.data.Data { @ManyToOne @MapsId("approval") - @JoinColumn(name = "APPROVAL_ID", nullable = false) + @JoinColumn(name = "APPROVAL_ID", nullable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) private Approval approval; - @NotNull @ManyToOne - @JoinColumn(name = "USER_ID", nullable = false) + @JoinColumn(name = "USER_ID", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + @NotFound(action = NotFoundAction.IGNORE) private UserInfo user; @Enumerated(value = STRING) diff --git a/src/main/java/com/eactive/apim/portal/approval/statemachine/ProcessingState.java b/src/main/java/com/eactive/apim/portal/approval/statemachine/ProcessingState.java index 22a4d0b..cc08b9e 100644 --- a/src/main/java/com/eactive/apim/portal/approval/statemachine/ProcessingState.java +++ b/src/main/java/com/eactive/apim/portal/approval/statemachine/ProcessingState.java @@ -45,7 +45,7 @@ public class ProcessingState implements ApprovalState { boolean statusChanged = false; // Update current approver status and track if it changed for (Approver approver : approval.getApprovers()) { - if (approver.getUser().getId().equals(approverId) && !ApproverStatus.APPROVED.equals(approver.getApproverStatus())) { + if (approver.getUser() != null && approverId.equals(approver.getUser().getId()) && !ApproverStatus.APPROVED.equals(approver.getApproverStatus())) { approver.setApproverStatus(ApproverStatus.APPROVED); approver.setApprovedDate(LocalDateTime.now()); statusChanged = true; @@ -76,7 +76,7 @@ public class ProcessingState implements ApprovalState { String approverId = (String) options.getOrDefault(ApprovalConstants.APPROVER, ""); if (isAuthorizedApprover(approval, approverId, options)) { approval.getApprovers().forEach(approver -> { - if(approver.getUser().getId().equals(approverId)) { + if(approver.getUser() != null && approverId.equals(approver.getUser().getId())) { approver.setApproverStatus(ApproverStatus.DENIED); approver.setApprovedDate(LocalDateTime.now()); String message = (String) options.getOrDefault("message", ""); diff --git a/src/main/java/com/eactive/apim/portal/approval/statemachine/RequestedState.java b/src/main/java/com/eactive/apim/portal/approval/statemachine/RequestedState.java index 5dfd604..e43f273 100644 --- a/src/main/java/com/eactive/apim/portal/approval/statemachine/RequestedState.java +++ b/src/main/java/com/eactive/apim/portal/approval/statemachine/RequestedState.java @@ -48,7 +48,7 @@ public class RequestedState implements ApprovalState { // Update current approver status and track if it changed for (Approver approver : approval.getApprovers()) { - if (approver.getUser().getId().equals(approverId) && !ApproverStatus.APPROVED.equals(approver.getApproverStatus())) { + if (approver.getUser() != null && approverId.equals(approver.getUser().getId()) && !ApproverStatus.APPROVED.equals(approver.getApproverStatus())) { approver.setApproverStatus(ApproverStatus.APPROVED); approver.setApprovedDate(LocalDateTime.now()); statusChanged = true; @@ -78,7 +78,7 @@ public class RequestedState implements ApprovalState { String approverId = (String) options.getOrDefault(ApprovalConstants.APPROVER, ""); if (isAuthorizedApprover(approval, approverId, options)) { approval.getApprovers().forEach(approver -> { - if (approver.getUser().getId().equals(approverId)) { + if (approver.getUser() != null && approverId.equals(approver.getUser().getId())) { approver.setApproverStatus(ApproverStatus.DENIED); approver.setApprovedDate(LocalDateTime.now()); String message = (String) options.getOrDefault("message", ""); @@ -97,7 +97,7 @@ public class RequestedState implements ApprovalState { String approverId = (String) options.getOrDefault(ApprovalConstants.APPROVER, ""); if (isAuthorizedApprover(approval, approverId, options)) { approval.getApprovers().forEach(approver -> { - if (approver.getUser().getId().equals(approverId)) { + if (approver.getUser() != null && approverId.equals(approver.getUser().getId())) { approver.setApproverStatus(ApproverStatus.CANCELED); approver.setApprovedDate(LocalDateTime.now()); } diff --git a/src/main/java/com/eactive/apim/portal/file/service/FileSystemBinaryStorage.java b/src/main/java/com/eactive/apim/portal/file/service/FileSystemBinaryStorage.java index 26b9817..c5f50a5 100644 --- a/src/main/java/com/eactive/apim/portal/file/service/FileSystemBinaryStorage.java +++ b/src/main/java/com/eactive/apim/portal/file/service/FileSystemBinaryStorage.java @@ -3,6 +3,7 @@ package com.eactive.apim.portal.file.service; import static com.eactive.apim.portal.file.service.StorageType.FILESYSTEM; import com.eactive.apim.portal.portalproperty.service.PortalPropertyService; +import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; diff --git a/src/main/java/com/eactive/apim/portal/qna/entity/Inquiry.java b/src/main/java/com/eactive/apim/portal/qna/entity/Inquiry.java index e2265b5..df5dfbd 100644 --- a/src/main/java/com/eactive/apim/portal/qna/entity/Inquiry.java +++ b/src/main/java/com/eactive/apim/portal/qna/entity/Inquiry.java @@ -79,7 +79,8 @@ public class Inquiry extends Auditable { * 응답자 */ @ManyToOne - @JoinColumn(name = "RESPONDER_ID") + @JoinColumn(name = "RESPONDER_ID", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) + @NotFound(action = NotFoundAction.IGNORE) private UserInfo responder; @Column(name = "ATTACH_FILE") diff --git a/src/main/java/com/eactive/apim/portal/template/service/MessageRecipient.java b/src/main/java/com/eactive/apim/portal/template/service/MessageRecipient.java index 8d1d2b0..0d7fa74 100644 --- a/src/main/java/com/eactive/apim/portal/template/service/MessageRecipient.java +++ b/src/main/java/com/eactive/apim/portal/template/service/MessageRecipient.java @@ -1,11 +1,8 @@ package com.eactive.apim.portal.template.service; import com.eactive.apim.portal.portaluser.entity.PortalUser; -import kjb.safedb.KjbNotRnnoJpaAttributeConverter; import lombok.*; -import javax.persistence.Convert; - @Data @ToString @EqualsAndHashCode