hibernate:No Dialect mapping for JDBC type: -4

项目中使用hibernate时遇到一个错误:

org.hibernate.MappingException: No Dialect mapping for JDBC type: -4

debug时在程序执行栈里,发现是一个Blob类型的字段在根据typeCode获取类型时出错。从网上搜到一篇文章:

http://blog.sina.com.cn/s/blog_4f925fc30102eafj.html。

原来原因是在OO映射时,Blob类型无法映射到相应的Java类型,解决方案可以扩展MysqlDialect,在扩展的方言中指定java类型到mysql数据库中的Blob字段类型的映射关系即可。如下:

?
1
2
3
4
5
6
7
8
9
10
import  java.sql.Types;
import  org.hibernate.Hibernate;
import  org.hibernate.dialect.MySQLDialect;
 
public  class  BlobMySQLDialectextends MySQLDialect {
   public  BlobMySQLDialect() {
     super ();  
     registerHibernateType(Types.LONGVARBINARY,Hibernate.BLOB.getName());
   }
}

然后在配置hibernat属性的配置文件中使用扩展后的Dialect。如下:

?
1
2
3
4
5
6
7
< property  name = "hibernateProperties" >
   < props >
    < prop  key = "hibernate.dialect" >
       com.shihuan.core.framework.extend.BlobMySQLDialect
    </ prop >
   </ props >
</ property >


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值