Paradox Simulation

728x90
반응형

현재 JPA로 웹 프로젝트를 진행 중인데 에러가 발생했다.

 

에러 내용은

Error executing DDL "create table xxx (id number(19,0) generated as identity,.... content TEXT not null....) via JDBC Statement....

 

이에 내용을 조사하던 도중에 원인을 발견했다.

 

JPA에서는 자동으로 create table을 해주는 설정이 있는데,

(application properties 부분)

그 부분에서 사용했던 hibernate ddl-auto를 create, generate-ddl를 true로 하고 사용을 한다면 자동으로 쿼리를 작성하여 db 테이블에 쏴준다.

 

문제는 그 자동에 있음인데, 해당 부분은 ORACLE DB를 이용했을 때의 문제였다.

 

정확히는 JPA - ORACLE 간의 문제가 아닌, 내가 사용했던 Entity에서 테이블 칼럼을 설정할 때 문제였는데,

 

위와 같이 쿼리를 직접 날려도 "ORA-00902: 데이터 유형이 부적합합니다."라고 답변이 올 뿐이었다.

 

따라서 해결방법은 다음과 같았다.

 

문제의 content 부분의 Entity Column 수정을 거쳤다.

 

@Column(columnDefinition = "TEXT", nullable = false) // 이부분이 문제였다.
private String content;

저부분에서 확인해야 할게 columnDefinition 부분인데, 이 부분을 TEXT로 지정하면 안 된다.

(Mysql이나 등등 TEXT 타입을 지원하는 DB에서는 사용이 가능하다.)

 

하지만 ORACLE DB에서는 TEXT 타입을 지원하지 않는 관계로 인해 column의 length를 늘려주는 거로 해결하였다.

 

@Column(length=1000, nullable = false) // 아예 지정해주는거로.. 크게
private String content;

보이는 바와 같이 칼럼을 늘려주고 다시 진행해본 결과 정상 작동하는 것을 확인할 수 있었다.

 

... 1시간 동안 삽질한 결과인듯하다.

728x90
반응형
250x250
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band