• 技术文章 >Java >java教程

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

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

    错误描述

    程序运行,向表中插入数据(包含中文)报错:\xE6\xB2\x88\xE9\x9B\xAA...

    但是自己另外新建一个数据库手动插入数据中文正常,同样修改数据库,表的编码之后同样不行。而且 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>

    以上就是Hibernate插入数据时遇到中文乱码报错的解决方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    专题推荐:Hibernate
    上一篇:Java中IDE的历史及idea的使用介绍 下一篇:Java如何获取http和https网址对应html数据(附代码)
    PHP编程就业班

    相关文章推荐

    • Hibernate注解映射mysql数据库上text类型_MySQL• Hibernate不能实时获取MySQL数据库的更新_MySQL• 使用Hibernate向mysql数据库中插入中文,数据库中显示??乱码_MySQL• 一步一步升级配置14: Mysql数据库,hibernate.dialect 使用MySQL5_MySQL• hibernate 在tomcat7.X 下配置mysql数据源_MySQL

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网