문서의 이전 판입니다!
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 참조varchar
컬럼 매핑을 다음과 같이하고, byte[]
값을 올바로 넣어주면 잘 작동하지 않을까?
String.getBytes('UTF-16')
등으로 Byte로 만들어서 저장하거나 하면 될 듯 하다.String code
로 선언할 수 이는 방법은없을까?varchar
의 데이터를 binary로 변경하고, 이를 String으로 바꿔주면 될 듯하다.