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)

是hibernate与mysql的jdbc驱动配合上出现了问题:对于 mysql text类型jdbc  ResultSetMetaData.getColumnType  返回-1  ,而hibernate没有注册该类型,所以导致createSQLQuery 报 No Dialect mapping for JDBCtype: -1。

解决方法:

1、写个类集成方言,然后自己实现对text的支持

import java.sql.Types;
 import org.hibernate.dialect.MySQL5Dialect;
 public class DialectForInkfish extends MySQL5Dialect {
     public DialectForInkfish() {
         super();
         registerHibernateType(Types.LONGVARCHAR, 65535, "text");
     }
 }  

2、

修改Hibernate配置文件hibernate.cfg.xml,把

<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>  

修改为:

<property name="dialect">com.ibm.crl.inkfish.config.DialectForInkfish</property> 

时间: 2024-08-04 22:43:35

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

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–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)

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 数据库方言配置;no dialect mapping for jdbc type:-9;生僻字

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

hibernate中1对1的注解配置

hibernate中1对1的注解配置分为:外键关联映射和主键关联映射 1.外键配置 //一方@Entity@Table(name="test_classinfo")public class ClassInfo { @Id @SequenceGenerator(name="seqClassInfo",sequenceName="seq_test_classinfo") @GeneratedValue(generator="seqClass

.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法

.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法 当TextBox设置了ReadOnly=true后要是在前台为控件添加了值,后台是取不到的,值为空,多么郁闷的一个问题经过尝试,发现可以通过如下的方式解决这个问题.感兴趣的朋友可以了解下 当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为“空” 原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充值,并不希望用户修改其控件内

使用MSSQL同步&amp;发布数据库快照遇到错误:对路径“xxxxx”访问被拒绝的解决方法

使用MSSQL同步 数据库同步做后后测试:先在同步那台服务器(服务器A)数据库里修改里面数据库,然后再去被同步那台服务器(服务器B)看下数据有没被同步过去 发布数据库快照遇到错误:对路径"xxxxx"访问被拒绝的解决方法 打开SQL Server 配置管理器 -> 在左边栏选择"SQL Server服 务"->在右侧面板中"SQL Server 代理"一行上右击,选择"属性", 在弹出的对话框中选择"内置

解决jquery中动态新增的元素节点无法触发事件的问题有两种解决方法

解决jquery中动态新增的元素节点无法触发事件的问题有两种解决方法,如下: 为了达到更好的演示效果,假设在某个页面的body下有以下结构的代码: ? 1 2 3 4 5 6 7 8 9 10 11 <p id="pLabel">新加一条</p> <ul id="ulLabel">  <li class="liLabel">aaa1</li>  <li class="li