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

MySQL数据库中的类型为longBlob

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

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

异常信息:

1 org.hibernate.MappingException: No Dialect mapping for JDBC type: -4
2     at org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
3     at org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
4     at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370)
5     at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559)

解决办法:

1、添加注册类:

 1 package com.prochanges.framework.utils;
 2
 3 import java.sql.Types;
 4
 5 import org.hibernate.Hibernate;
 6 import org.hibernate.dialect.MySQL5Dialect;
 7
 8 public class BlobMySQLDialect extends MySQL5Dialect {
 9     public BlobMySQLDialect() {
10         super();
11         registerHibernateType(Types.LONGVARBINARY, Hibernate.BLOB.getName());// 注册blob,Types.LONGVARBINARY的值就是-4
12     }
13 }

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

<prop key="hibernate.dialect">com.prochanges.framework.utils.BlobMySQLDialect</prop>

时间: 2024-11-15 05:02:44

No Dialect mapping for JDBC type–4 hibernate查询MySQL中longBlob数据的相关文章

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.

hibernate查询异常:No Dialect mapping for JDBC type:-9(sql server)

今天用到hibernate查询数据库数据(sql server),出现异常:No Dialect mapping for JDBC type:-9 但是把对应的sql语句拷贝到数据库UI工具运行发现没有错误,所以考虑是hibernate查询的问题. 最终通过上网查资料发现hibernate对于nvarchar的查询问题,一般在中文系统中应该使用nvarchar作为字符串的对应类型,但是Hibernate中的默认实现SQLServerDialect使用了varchar. 解决方法: 1.自定义个一

hibernate中对于数据库的Text注解出现 No Dialect mapping for JDBC type: -1解决方法

hibernate中对于数据库的Text数据类型不支持. hibernate 使用hql查询包含text类型字段的时候很好.如果使用native sql也就是使用  createSQLQuery方法查询text类型的时候总是报错: org.hibernate.MappingException: No Dialect mapping for JDBC type:-1 atorg.hibernate.dialect.TypeNames.get(TypeNames.java :56) 是hiberna

org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 解决方法

错误代码: [c-sharp] view plaincopy org.hibernate.MappingException: No Dialect mapping for JDBC type: -1 at org.hibernate.dialect.TypeNames.get(TypeNames.java:79) at org.hibernate.dialect.TypeNames.get(TypeNames.java:104) at org.hibernate.dialect.Dialect.

错误:No Dialect mapping for JDBC type: -9

org.springframework.orm.hibernate3.HibernateSystemException: No Dialect mapping for JDBC type: -9; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: -9    at org.springframework.orm.hibernate3.SessionFactoryUtils.c

Hibernate 数据库方言配置;no dialect mapping for jdbc type:-9;生僻字

最近因为生僻字在界面上显示为?: 主要原因是该字段在数据库中就是varchar类型,显示的就是?:如?(yan):现把varchar类型改为nvarchar类型:数据中能够正常显示: 但是SpringBoot程序jpa执行原生的存储过程的会报如下错误: 经验证,是因为Hibernate数据库方言配置问题:增加数据库方言配置 ,方言需要重写: package com.winning.thread; import org.hibernate.dialect.SQLServerDialect;impo

ORACLE11g:No Dialect mapping for JDBC type: -9解决方案

问题来源: 煞笔领导不干活 好不容易干了个活 改了个字段长度,从varchar2(50) 改成了nvarchar(100) 结果因为方言问题,程序起不来了 字段类型也改不回来了 nnd 报错如下: 解决方案 由于hibernate4.2.0和Oracle10g数据库结合使用自定义方言时,需要和老版本做区别,原来的Oracle10gDialect中没有注册NVARCHAR和NCLOB数据类型, 此二者的java.sql.Types对应的类型编码为-9和2011,其它的类型可以参考下面的表1,解决思

执行sql出现No Dialect mapping for JDBC type: -9错误

name的数据类型是nvarchar吗?如果是改为varchar类型应该能运行,但是这个治标不治本,这是hibernate没映射nvarchar 刚才整理了一下varchar和nvarchar的区别,然后用Hibernate映射到数据库时,发现String类型被映射为了varchar,就在网上找了一下怎样将String映射为nvarchar. 方法一: 对于String类型,你可能是这样映射的 [java] view plaincopy private String name; @Column(

No Dialect mapping for JDBC type: -9

由于项目中使用的是hibernate 4.35版本和sqlserver 2008数据库.所以,自定义方言时,需要和老版本做区别: public class MySQLServerDialect extends SQLServerDialect { public MySQLServerDialect() { super(); registerHibernateType(1, "string"); registerHibernateType(-9, "string");