NVARCHAR를 인식하지 못하는 문제 발생시 아래 오류 발생org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
registerColumnType 돼 있음 따라서 이 이후 버전 Dialect를 사용하면 NVARCHAR 매핑이 작동한다.@org.hibernate.annotations.Nationalized 애노테이션을 통해 NVARCHAR 로 Entity Column 매핑을 할 수 있다.// NVARCHAR 매핑 @Basic @Nationalized public String description; // NCLOB 매핑 @Lob @Basic @Nationalized public NClob description;
package com.nhl.dao; import java.sql.Types; import org.hibernate.dialect.SQLServerDialect; import org.hibernate.type.StandardBasicTypes; public class SQlServerDBDialect extends SQLServerDialect { public SQlServerDBDialect() { super(); registerHibernateType(Types.NCHAR, StandardBasicTypes.CHARACTER.getName()); registerHibernateType(Types.NCHAR, 1, StandardBasicTypes.CHARACTER.getName()); registerHibernateType(Types.NCHAR, 255, StandardBasicTypes.STRING.getName()); registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName()); registerHibernateType(Types.LONGNVARCHAR, StandardBasicTypes.TEXT.getName()); registerHibernateType(Types.NCLOB, StandardBasicTypes.CLOB.getName()); } }
registerHibernateType은 Hibernate Dialect 참조