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

最近因为生僻字在界面上显示为?;

主要原因是该字段在数据库中就是varchar类型,显示的就是?;如?(yan);现把varchar类型改为nvarchar类型;数据中能够正常显示;

但是SpringBoot程序jpa执行原生的存储过程的会报如下错误;

经验证,是因为Hibernate数据库方言配置问题;增加数据库方言配置

,方言需要重写:

package com.winning.thread;

import org.hibernate.dialect.SQLServerDialect;import org.hibernate.type.StandardBasicTypes;import java.sql.Types;

public class MyDialect extends SQLServerDialect {    public MyDialect() {        super();        registerHibernateType(Types.NCHAR, StandardBasicTypes.CHARACTER.getName());        registerHibernateType(Types.NCHAR, 1, StandardBasicTypes.CHARACTER.getName());        registerHibernateType(Types.NCHAR, 255, StandardBasicTypes.STRING.getName());        registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());        registerHibernateType(Types.LONGNVARCHAR, StandardBasicTypes.TEXT.getName());        registerHibernateType(Types.NCLOB, StandardBasicTypes.CLOB.getName());    }}

能够正常显示!

参考如下两篇文章解决,感谢大神:https://stackoverflow.com/questions/27039300/jpa-sql-server-no-dialect-mapping-for-jdbc-type-9https://stackoverflow.com/questions/47270883/spring-boot-wont-load-user-defined-dialect

原文地址:https://www.cnblogs.com/llywy/p/9638500.html

时间: 2024-10-05 04:08:22

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

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: -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.

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)

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.自定义个一

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

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,解决思

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");

执行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(