Hibernate插入数据时遇到中文乱码报错的解决方法

如果下载的源码需要作者授权,请更换源码。本站免费分享资源不会增加授权

本篇文章给大家带来的内容是关于Hibernate插入数据时遇到中文乱码报错的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

错误描述

程序运行,向表中插入数据(包含中文)报错:xE6xB2x88xE9x9BxAA…

但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行。而且 MySQL5.7下也会出现这种情况无法解决。

问题解决

在 Hibernate 主配置文件中,我们会配置数据库方言,一般配置如下:

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

查看其对应源码可以查看到有个方法,如下:

@Override   public String getTableTypeString() {     return "ENGINE=InnoDB";   }

所以我们可以自定义一个类,重写上面方法,如下:

package com.taohan.util; import org.hibernate.dialect.MySQL5InnoDBDialect; public class HibernateEncodeAdapter MySQL5InnoDBDialect {     @Override      public String getTableTypeString() {           return "ENGINE=InnoDB DEFAULT CHARSET=utf8";         }   }

最后修改 Hibernate 主配置文件,指定数据库方言类为我们自定义的那个,如下:

<property name="dialect">com.taoahn.util.HibernateEncodeAdapter</property>

当然,最好是同时在 Hibernate 主配置文件的设置数据库连接路径后加上 ?useUnicode=true&characterEncoding=UTF-8,如下:

<property name="hibernate.connection.url">jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8</property>
历史上的今天
09
30
 收藏 (0) 打赏

入群打赏请备注QQ,购买打赏请备注邮箱

支付宝扫一扫赞助

微信钱包扫描赞助

未经5G云允许不得转载:5G云源码分享网 » Hibernate插入数据时遇到中文乱码报错的解决方法

评论 抢沙发

评论前必须登录!

立即登录   注册

5G云源码 更专业 更方便

关于5G云联系我们
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活