[Spring] 오류 해결 [:compileQuerydsl error /error: package ~~ does not exist /
제목에서 나타낸 모든 오류가 뒤죽박죽 반복적으로 나타났다. 예전에도 이러한 오류가 발생했었는데 해결을 어떻게 했었는지 기억이 안나서 또또 삽질하다가^^ 기록해둔다,,!
:compileQuerydsl error
error: package ~~ does not exist
이런 오류 같은 경우에는 보통 DB를 안켜두었을 때 많이 발생했던 오류였던거로 기억한다. 그래서 H2 DB를 껐다가 다시 켜보았지만 해결이 안됐다.
그래서 File - Settings로 들어가
annotaion을 검색해서
이 부분이 잘 체크가 되었는지를 확인하고
또,
gradle을 검색하여
이 부분이 Gradle이 아닌 Intellij IDEA로 설정되어있는 지를 확인하였다.
보통 이정도 확인하면 문제를 발견하고 해결이 되어야 했는데,, 문제를 발견하지 못하던 와중,,
바로 SDK가 15버전으로 적용되어있었음을 발견했다.
위 사진에서는 이미 11로 바꿔주어서 11로 보이지만 원래 15였다.
그래서
File에서 Project Structure에서 SDK로 가서 11로 적용해주었더니 오류가 해결되었다.
또, @PostConsturt 를 이용해서 관리자 계정을 생성해주는 과정을 추가하면 오류가 발생했다.
처음에 나타난 오류는
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name '~Controller' defined in file
라는 오류였다. 대부분 annotation을 빼두었을 때 이러한 오류가 발생한다고 한다. (@Controller, @Service 등등)
하지만, 난 annotation을 빼먹지 않았었다..ㅠ
그래서 오른쪽 Gradle로 들어가 build에서 clean을 해주고 build를 해주었다.
역시 build가 안된다..
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist
오류를 더 아래로 내려보니 이러한 오류도 있었다. 다른 분들 포스팅을 살펴보니 @ManyToOne 관계에서
cascade = CascadeType.ALL 설정을 해준 것에서 오류가 이어지는 것이라고 하여 지워주었더니
위의 오류와 함께 모두 해결되었다.
하지만 이렇게 해주어도 UnsatisfiedDependencyException이 발생한다면 application.yml에서 DB를 확인해주도록 한다.
H2 DB 기준으로 ddl-auto : update인 상태에서 @PostConstruct를 이용하여 관리자 계정을 생성해주려고 한다면, 기존에 이미 ddl-auto : create인 상태에서 관리자 계정이 이미 생성되어있기 때문에 해당 오류가 발생한다.
@PostConstruct를 포함한 관리자 계정 생성 부분을 주석처리 해준 후 update해주면 된다.
영속성이나 스프링 빈 순환 등등에 있어서 기초가 많이 부족하다보니 이런 오류가 발생할 때마다 도저히 해결을 못하게 된다..
다음에 매핑관계 등등에서 오류가 발생해도 끈기있게,,, 해결해보쟈,,