问题积累—关于 No Dialect mapping for JDBC type: 错误

参考了http://www.iteye.com/topic/580476的文章,解决问题。

 

在此记录一下:

 

我的SQLServer数据库中表的字段是nvarchar(1),升级到2008上也是nvarchar(1)出现了
 
运行的时候报错:No Dialect mapping for JDBC type:-9
 
解决方法如下:
1.首先自己写一个class,继承org.hibernate.dialect.SQLServerDialect
 
 
import java.sql.Types;   
  
import org.hibernate.Hibernate;   
import org.hibernate.dialect.SQLServerDialect;   
  
public class SqlServer2008Dialect extends SQLServerDialect {   
  
    public SqlServer2008Dialect() {   
        super();   
        registerHibernateType(Types.CHAR, Hibernate.STRING.getName());   
        registerHibernateType(Types.NVARCHAR, Hibernate.STRING.getName());   
        registerHibernateType(Types.LONGNVARCHAR, Hibernate.STRING.getName());   
        registerHibernateType(Types.DECIMAL, Hibernate.DOUBLE.getName());   
    }   
}  
  
 
2:修改配置文件application.xml:
 
<property name="hibernateProperties">
      <props>
              <prop key="hibernate.dialect">
               com.***.***.***.util.SqlServer2008Dialect
              </prop>
      </props>
</property>
 
注:其他的数据类型请参考下表
类型名称显示长度数据库类型JAVA类型JDBC类型(int)Types属性
VARCHARL+NVARCHARjava.lang.String12Types.VARCHAR
CHARNCHARjava.lang.String1Types.CHAR
BLOBL+NBLOBjava.lang.byte[]-4Types.LONGVARBINARY
TEXT65535VARCHARjava.lang.String-1Types.LONGVARCHAR
INTEGER4INTEGER UNSIGNEDjava.lang.Long4Types.INTEGER
TINYINT3TINYINT UNSIGNEDjava.lang.Integer-6Types.TINYINT
SMALLINT5SMALLINT UNSIGNEDjava.lang.Integer5Types.SMALLINT
MEDIUMINT8MEDIUMINT UNSIGNEDjava.lang.Integer4Types.INTEGER
BIT1BITjava.lang.Boolean-7Types.BIT
BIGINT20BIGINT UNSIGNEDjava.math.BigInteger-5Types.BIGINT
FLOAT4+8FLOATjava.lang.Float7Types.REAL
DOUBLE22DOUBLEjava.lang.Double8Types.DOUBLE
DECIMAL11DECIMALjava.math.BigDecimal3Types.DECIMAL
BOOLEAN1同TINYINTjava.lang.Integer-6Types.TINYINT
DATE10DATEjava.sql.Date91Types.DATE
TIME8TIMEjava.sql.Time92Types.TIME
DATETIME19DATETIMEjava.sql.Timestamp93Types.TIMESTAMP
TIMESTAMP19TIMESTAMPjava.sql.Timestamp93Types.TIMESTAMP
YEAR4YEARjava.sql.Date91Types.DATE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值