카테고리 없음

@Builder 했을때 , @GeneratedValue 오류로 ID가 null인 현상

MDanderson 2023. 6. 26. 15:23

코드를 봤을 때, @Builder 애노테이션이 User 클래스에 직접 적용되어 있습니다. Lombok의 @Builder 애노테이션은 클래스 레벨에 적용할 경우 모든 필드를 포함한 빌더를 생성합니다. 그러나 'id'와 같이 자동 생성되는 필드가 포함되어 있을 때는 이를 사용하면 문제가 발생할 수 있습니다.

이는 @Builder 애노테이션을 사용할 경우 생성자를 직접 호출하지 않고 빌더 패턴을 사용하기 때문에, @GeneratedValue와 같은 JPA 애노테이션이 제대로 동작하지 않을 수 있습니다.

따라서 @Builder를 사용하는 경우 필요한 필드만을 가진 생성자 위에 적용하거나, 모든 필드를 가진 생성자 위에 적용한 후 빌더를 사용할 때 자동 생성되는 필드를 제외하고 사용해야 합니다.

예를 들어, 아래와 같이 @Builder 애노테이션을 필요한 필드만을 가진 생성자 위에 적용할 수 있습니다:

이렇게 하면 id와 createDate는 JPA에 의해 자동으로 관리되며, 빌더를 사용할 때는 위 생성자에 정의된 필드만을 설정할 수 있습니다.