项目中使用hibernate时遇到一个错误:html
debug时在程序执行栈里,发现是一个Blob类型的字段在根据typeCode获取类型时出错。从网上搜到一篇文章:java
http://blog.sina.com.cn/s/blog_4f925fc30102eafj.html。mysql
原来缘由是在OO映射时,Blob类型没法映射到相应的Java类型,解决方案能够扩展MysqlDialect,在扩展的方言中指定java类型到mysql数据库中的Blob字段类型的映射关系便可。以下:sql
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。以下:数据库
<property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> com.shihuan.core.framework.extend.BlobMySQLDialect </prop> </props> </property>