您的位置:首页 > 移动开发

No Dialect mapping for JDBC type–4 hibernate查询MySQL中longBlob数据

2014-08-23 14:32 351 查看
MySQL数据库中的类型为longBlob

实体类定义为:byte[] 类型

映射文件配置为:type="org.springframework.orm.hibernate3.support.BlobByteArrayType

异常信息:

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)
at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559)


解决办法:

1、添加注册类:

package com.prochanges.framework.utils;

import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQL5Dialect;

public class BlobMySQLDialect extends MySQL5Dialect {
public BlobMySQLDialect() {
super();
registerHibernateType(Types.LONGVARBINARY, Hibernate.BLOB.getName());// 注册blob,Types.LONGVARBINARY的值就是-4
}
}


2、修改配置文件中数据库的hibernate.dialec属性的值,即为刚写的注册类:

<prop key="hibernate.dialect">com.prochanges.framework.utils.BlobMySQLDialect</prop>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: