hibernate:No Dialect mapping for JDBC type: -4

項目中使用hibernate時遇到一個錯誤:html

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

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>
相關文章
相關標籤/搜索