org.hibernate.MappingException: No Dialect mapping for JDBC type: -4详解编程语言

Stacktraces 
 
org.hibernate.MappingException: No Dialect mapping for JDBC type: -4 
    org.hibernate.dialect.TypeNames.get(TypeNames.java:56) 
    org.hibernate.dialect.TypeNames.get(TypeNames.java:81) 
    org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370) 
    org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559) 
    org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485) 
    org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501) 
    org.hibernate.loader.Loader.getResultSet(Loader.java:1796) 
    org.hibernate.loader.Loader.doQuery(Loader.java:674)

问题还原:

数据库为MySQL,读取表中一个Blog类型字段

String hql ="select ID,IMG from test"; 
Session session = getSession(); 
list = session.createSQLQuery(hql).list();


问题解决:

这是由于mysql(BLOB或text)在hibernate中没有注册该类型

重写MySQL方言,新建一个类

import java.sql.Types; 
import org.hibernate.Hibernate; 
import org.hibernate.dialect.MySQLDialect; 
 
public class BlobMySQLDialect extends MySQLDialect{ 
	public BlobMySQLDialect () { 
        super(); 
        registerHibernateType(Types.LONGVARBINARY, Hibernate.BLOB.getName()); 
    } 
}

修改Hibernate配置文件

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>    
修改为:   
<property name="dialect">该类所在路径/BlobMySQLDialect</property>  

作者:blog.ytso.com

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/14391.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论