原创

类型报错 No Dialect mapping for JDBC type -4

        在标准实现中,JDBC驱动程序在后台使用SQL类型LOCATOR(BLOB)来实现Blob接口。LOCATOR(BLOB)指向保存在数据库服务器上的SQL BLOB值,而且这些操作作用在这个LOCATOR(定位器)上与作用在BLOB值本身有同样的结果。


在项目开发中使用mysql数据库时BLOB对象报以下错误:

Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: -4
    at org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
    at org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
    at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370)
    ...


原因是实体某个属性类型导致如BLOB对象;解决方式修改mysql方言代码如下:

package com.util.dialect; 
import java.sql.Types; 
import org.hibernate.Hibernate; 
import org.hibernate.dialect.MySQL5Dialect; 
/**
 * 注册BLOB类型(String类型)
 * @author yoodb
 *
 */ 
public class PersonSQLDialect extends MySQL5Dialect { 
     public PersonSQLDialect () { 
           super(); 
           registerHibernateType(Types.LONGVARBINARY, Hibernate.BLOB.getName());
           //注册blob,Types.LONGVARBINARY的值就是-4
     } 
}


修改数据库配置文件,部分配置文件如下:

...
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mysql"/> 
<property name="hibernate.connection.username" value="root"/> 
<property name="hibernate.connection.password" value="123456"/> 
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider"/>    
...

将上面的org.hibernate.dialect.MySQLDialect mysql方言修改为com.util.dialect.PersonSQLDialect即可,问题就可以解决了。

关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

相关推荐

评论

分享:

支付宝

微信