본문 바로가기

오류해결

java.sql.SQLSyntaxErrorException: Table '' doesn't exist

JPA를 사용하기 위해 테이블 Entity class를 만들고 구동시켰더니 오류가 났다.

java.sql.SQLSyntaxErrorException: Table ' 테이블이름 ' doesn't exist

 


해결방법은 

Entity class파일에서 @Entity 어노테이션에 값을 설정하면 된다.

@Entity(name="USER_INFO")
public class UserInfo {
   ...
}

 

이 Entity는 DB테이블에 대응하는 클래스이기 때문에, DB테이블과 맵핑하기 위해서는 꼭 붙여야 한다.

속성으로 name을 사용하면, JPA에서 사용할 Entity 이름을 지정하는 것이다. 지정을 하지 않으면 클래스 이름을 그대로 사용한다.

 

여기서 말하는 Entity이름이라고 하면, 감이 안올 수 있으니 다음과 같은 예시를 작성한다!

@Entity
public class UserInfo {
   ...
}

이렇게 되면, JPA에서 쿼리로 수행할 때는 클래스 이름을 그대로 사용하여 조회한다.

SELECT * FROM UserInfo

 

name 속성을 사용했을 때의 예시이다!

@Entity(name="USER_INFO")
public class UserInfo {
   ...
}

name의 속성값으로 쿼리 수행을 한다.

SELECT * FROM USER_INFO

 

즉, 현재 상황 같은 경우 DB 테이블의 이름이 USER_INFO로 되어있었기 때문에 이렇게 name속성을 이용해 DB에 정의되어있는 테이블로 조회해야 했던 것이다.