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>  

作者:itmyhome


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值