상황
- 할 일을 새로 저장할 시, 할 일을 생성한 유저는 담당자로 자동 등록되어야 합니다.
- JPA의 cascade 기능을 활용해 할 일을 생성한 유저가 담당자로 등록될 수 있게 해주세요.

해결 방법
하나의 할일은 여러 담당자를 가진다(리스트 형태). 따라서 할일이 생성될 때 할일을 생성한 사용자는 managers라는 list에 add 되어야 한다.
할 일이 생성될 때만 유저를 담당자 리스트에 넣어주면 되므로, @OneToMany의 Cascade 옵션을 Cascade = Cascade.PERSIST로 지정해주자.

| 속성 값 | 설명 |
| Cascade.ALL | 모든 변경(저장, 병합, 삭제, 재로딩)이 관련 엔티티에 적용됩니다. |
| Cascade.DETACH | 엔티티가 detach 상태로 변경될 때, 관련 엔티티도 함께 변경됩니다. |
| Cascade.MERGE | 현재 엔티티의 상태를 데이터베이스에 반영할 때, 관련 엔티티도 함께 반영됩니다. |
| Cascade.PERSIST | 엔티티를 데이터베이스에 저장할 때, 관련 엔티티도 함께 저장됩니다. |
| Cascade.REFRESH | 엔티티를 데이터베이스로부터 새로운 정보로 갱신할 때, 관련 엔티티도 함께 갱신됩니다. |
| Cascade.REMOVE | 엔티티를 삭제할 때, 관련 엔티티도 함께 삭제됩니다 |
출처: https://adjh54.tistory.com/477
[Java/JPA] Spring Boot Data JPA 엔티티 어노테이션 이해하기 -2 : 엔티티(테이블)간의 관계
해당 글에서는 Spring Boot JPA에서 엔티티 어노테이션 중 테이블 간의 관계에 사용되는 어노테이션에 대해 알아봅니다 💡 [참고] JPA 관련해서 구성 내용에 대해 궁금하시면 아래의 글을 참고하
adjh54.tistory.com
출처: https://docs.oracle.com/javaee/7/api///javax/persistence/CascadeType.html
CascadeType (Java(TM) EE 7 Specification APIs)
All Implemented Interfaces: Serializable, Comparable public enum CascadeType extends Enum Defines the set of cascadable operations that are propagated to the associated entity. The value cascade=ALL is equivalent to cascade={PERSIST, MERGE, REMOVE, REFRESH
docs.oracle.com
해결 확인
확인을 위해 로그인 후 할일을 저장해 보자. 현재 로그인한 userId는 1이다.
아래와 같이 할일을 저장하는 API 요청을 보내면

DB에 아래와 같이 할일이 추가되었고, user_id도 1로 잘 저장되었다.

'Projects > [Spring] Code Refactoring Project' 카테고리의 다른 글
| [Spring Plus] JPQL을 Querydsl로 변환하기 (0) | 2026.03.04 |
|---|---|
| [Spring Plus] DTO Projection으로 N+1 문제 해결하기 (0) | 2026.03.01 |
| [Spring Plus] AOP의 동작 흐름 제어하기 (0) | 2026.02.28 |
| [Spring Plus] 컨트롤러 테스트 성공시키기 (0) | 2026.02.28 |
| [Spring Plus] JPQL로 쿼리 옵션 추가하기 (0) | 2026.02.27 |