Wrong column type in for column create_id. Found: nvarchar, expected: varchar(255)

2018. 5. 10. 11:17IT개발/Spring Boot & Spring Data Rest & JPA

반응형

현상 : Wrong column type in [테이블] for column create_id. Found: nvarchar, expected: varchar(255)

원인 : 하이버네이트에서 기본적으로 varchar 또는 varchar2은 String 타입과 맵핑하는데 nvarchar로 맵핑되었다고 에러 뿜뿜(못해먹겠다고 들어누운상황)

        하이버네이트 문서에 보면,  string :  A type mapping from java.lang.String to VARCHAR (or Oracle VARCHAR2).

해결 : 

1. @Nationalized 사용

예시)

@Nationalized

     @Column(name = "CREATE_ID", updatable = false)

     private String createId;


2. columnDefinition = "nvarchar" 사용

예시)

@Column(name = "CREATE_ID", columnDefinition = "nvarchar", updatable = false)

protected String    createId;


     3. SQLServerNativeDialect 사용( 위 2개는 테스트해본결과 정상동작함. 그런데 3번은 테스트 안해봤음... 일단 참고용으로... )

     예시)

public class SQLServerNativeDialect extends SQLServerDialect {

    public SQLServerNativeDialect() {

        super();

        registerColumnType(Types.VARCHAR, "nvarchar($l)");

        registerColumnType(Types.CLOB, "nvarchar(max)");

    }

}


참고 : http://whiteship.tistory.com/1432

반응형