原创

类型报错 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),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信