티스토리 뷰

Spring Boot logo
Spring Boot logo


Spring Boot 애플리케이션을 개발하면서 Not a managed type 에러를 만나게 되는 경우가 종종 있습니다. 이 에러는 주로 JPA와 관련된 문제로, Spring Data JPA가 엔티티 클래스를 관리할 수 없음을 나타냅니다. 이번 글에서는 이 에러의 원인과 해결 방법을 살펴보겠습니다.


Not a managed type 에러란?

Spring Data JPA는 @Entity 어노테이션이 선언된 클래스를 관리합니다. 하지만 JPA가 해당 클래스를 관리 대상으로 인식하지 못하면 다음과 같은 에러가 발생할 수 있습니다:

java.lang.IllegalArgumentException: Not a managed type: class com.example.demo.entity.MyEntity

이 에러는 주로 다음과 같은 경우에 발생합니다:

  • @Entity 어노테이션이 누락되었거나 잘못 설정된 경우
  • 패키지 스캔 범위가 잘못 설정된 경우
  • 엔티티가 제대로 빌드되지 않은 경우

에러의 주요 원인과 해결 방법

1. @Entity 어노테이션 누락

JPA 엔티티로 등록하려는 클래스에 @Entity 어노테이션이 누락된 경우 에러가 발생합니다.

문제 코드:

package com.example.demo.entity;

public class MyEntity {
    private Long id;
    private String name;
}

해결 방법: 클래스에 @Entity 어노테이션을 추가하세요:

package com.example.demo.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class MyEntity {

    @Id
    private Long id;
    private String name;
}

2. 패키지 스캔 범위 문제

Spring Boot는 기본적으로 @SpringBootApplication이 선언된 클래스의 패키지와 하위 패키지를 스캔합니다. 엔티티 클래스가 스캔 범위 밖에 있는 경우 에러가 발생할 수 있습니다.

해결 방법:

  1. 엔티티 클래스가 @SpringBootApplication 클래스의 하위 패키지에 위치하도록 이동합니다.
  2. @EntityScan 어노테이션을 사용하여 명시적으로 엔티티 패키지를 지정합니다:
import org.springframework.boot.autoconfigure.domain.EntityScan;

@SpringBootApplication
@EntityScan(basePackages = "com.example.demo.entity")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

3. Hibernate 설정 문제

Hibernate 설정이 누락되었거나, 데이터베이스와의 연결 설정이 잘못된 경우에도 이 에러가 발생할 수 있습니다.

해결 방법:

application.properties 또는 application.yml에 올바른 설정을 추가하세요:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.jpa.hibernate.ddl-auto=update

디버깅 팁

  1. 에러 로그 확인: 정확한 원인을 파악하기 위해 전체 에러 메시지를 확인하세요.
  2. 빌드 클린: mvn clean 또는 gradle clean 명령어로 프로젝트를 정리하고 다시 빌드합니다.
  3. 패키지 구조 점검: 엔티티 클래스와 @SpringBootApplication 클래스의 패키지 구조를 확인하세요.
  4. 의존성 확인: spring-boot-starter-data-jpa와 같은 JPA 관련 의존성이 포함되었는지 확인하세요.

참고 자료

더 자세한 내용은 공식 Spring Boot 및 Hibernate 문서를 참조하세요:


결론

Not a managed type 에러는 주로 엔티티 클래스 설정 문제나 패키지 스캔 범위 설정 문제에서 발생합니다. 위에서 소개한 해결 방법을 따라가며 문제를 하나씩 점검하면 쉽게 해결할 수 있습니다. 문제가 지속된다면 공식 문서를 참조하거나 추가적인 디버깅을 진행해 보세요.

 

 

 

  • Spring Boot JPA
  • Not a Managed Type 에러
  • Spring Data JPA 설정
  • Hibernate 문제 해결
  • 엔티티 클래스 설정
  • 패키지 스캔 범위
  • JPA 디버깅 팁
  • Spring Boot 에러 해결
  • application.properties 설정
  • @EntityScan 활용법

 

최근에 올라온 글
글 보관함
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
최근에 달린 댓글