-
[스프링 부트] InvalidDataAccessApiUsageException: Unknown entity #그래들 멀티 모듈Spring Boot 2022. 1. 28. 01:31
[스프링 부트] InvalidDataAccessApiUsageException: Unknown entity 에러
#그래들 멀티 모듈
인텔리제이로 프로젝트를 하던 중 에러가 났다.
JPA를 사용하고 있었는데 web, admin 에서 사용되는 domain이 공통으로 겹쳐게 되자 이를 효율적으로 사용하기 위해 web, admin, domain 3개의 멀티 그래들 모듈로 프로젝트를 구성한 상태였다.
├── web │ ... │ └── build.gradle ├── admin │ ... │ └── build.gradle ├── domain │ ... │ └── build.gradle └── settings.gradle
그리고 admin에서 서버를 실행하자 다음과 같은 에러가 발생했다.
InvalidDataAccessApiUsageException: Unknown entity
domain 모듈을 admin 모듈의 서브 모듈로 설정 했지만 스프링 컨테이너가 domain 모듈에 있는 Entity를 인식하지 못해서 발생한 문제였다.
admin 모듈에서 scanBasePackages을 이용해서 domain 모듈을 scan 하면 스프링 컨테이너가 Entity를 인식할 것이라 생각했는데 되지 않았다.
@SpringBootApplication(scanBasePackages = {"com.admin.*","com.domain.*"})
해결방법
@EntityScan 어노테이션을 사용하면 다른 모듈의 Entity를 스캔할 수 있었다.
@EntityScan("com.domain.*")
또한 repository도 @EnableJpaRepositories 어노테이션을 사용해 스캔 할 수 있었다.
@EnableJpaRepositories("com.domain.*")
최종적인 admin 모듈의 AdminApplication 코드이다.
@SpringBootApplication(scanBasePackages = {"com.admin.*","com.domain.*"}) @EntityScan("com.domain.*") @EnableJpaRepositories("com.domain.*") public class AdminApplication { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); } }
References
- https://docs.gradle.org/current/userguide/multi_project_builds.html
- https://gwonsungjun.github.io/articles/2019-04/gradle_multi_module
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'Spring Boot' 카테고리의 다른 글
[스프링 부트] 예외처리(Exception) @ControllerAdvice @RestControllerAdvice @ExceptionHandler @ResponseStatus (0) 2022.02.14 Logback이란? feat.SLF4J (0) 2022.01.30 로그(log) 기록하기, SLF4J란? (0) 2022.01.29 [Spring boot] MySql 연결 에러, com.mysql.cj.jdbc.driver (0) 2022.01.19 인텔리제이에 spring-boot-devtools 추가하기 (0) 2021.12.11