tasks와 매핑되는 JPA 엔티티@PrePersist / @PreUpdate로 자동 생성/수정 시간 및 기본값 세팅| 구분 | 필드 | 타입 | 설명 |
|---|---|---|---|
| PK | id |
Long | 업무 고유 ID |
| 기본 정보 | title, description, dueDate |
String/LocalDate | 제목, 상세, 마감일 |
| 상태/우선순위 | status, priority, visibility |
Enum | 상태(TODO 등), 우선순위(MEDIUM 등), 공개 범위(DEPARTMENT 등) |
| 상태 사유 | holdReason, cancelReason |
String | ON_HOLD/CANCELED 상태 시 이유 |
| 삭제 | isDeleted, deletedAt |
boolean/LocalDateTime | soft delete 여부 + 삭제 시각 |
| 작성자/담당자 | createdBy, assignee |
UserEntity | 작성자(필수), 담당자(선택) |
| 부서 | ownerDepartment, workDepartment |
DepartmentEntity | 업무 소유 부서, 실제 처리 부서 |
| 시간 | createdAt, updatedAt |
LocalDateTime | 생성/수정 시각 |
@PrePersist
void prePersist() {
LocalDateTime now = LocalDateTime.now();
createdAt = now;
updatedAt = now;
if (status == null) status = TaskStatus.TODO;
if (priority == null) priority = TaskPriority.MEDIUM;
if (visibility == null) visibility = TaskVisibility.DEPARTMENT;
if (createdBy != null && ownerDepartment == null) {
ownerDepartment = createdBy.getDepartment();
}
if (workDepartment == null) {
workDepartment = (assignee != null) ? assignee.getDepartment() : ownerDepartment;
}
}
@PreUpdate
void preUpdate() {
updatedAt = LocalDateTime.now();
}
설명:
@PrePersist: 새 엔티티 저장 직전 실행 → 시간, 기본값, 부서 세팅@PreUpdate: 수정 직전 실행 → updatedAt 갱신isDeleted 필드 존재priorityOrDefault(), visibilityOrDefault()) + @PrePersist로 보완