【问题标题】:Problem with UTF-8 in Create Schema By HibernateHibernate 创建模式中的 UTF-8 问题
【发布时间】:2010-11-13 10:58:58
【问题描述】:

这是我的 hibernate.hbm.xml 我使用 MySQL

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dbName?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">******</property>

        <property name="hbm2ddl.auto">update</property>
        <property name="hibernate.connection.useUnicode">true</property>
        <property name="hibernate.connection.characterEncoding">UTF-8</property>


        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hibernate.use_sql_comments">true</property>
        <property name="current_session_context_class">thread</property>

        <!-- configuration pool via c3p0-->
        <property name="c3p0.acquire_increment">1</property>
        <property name="c3p0.idle_test_period">100</property> <!-- seconds -->
        <property name="c3p0.max_size">100</property>
        <property name="c3p0.max_statements">0</property>
        <property name="c3p0.min_size">10</property>
        <property name="c3p0.timeout">100</property> <!-- seconds -->
        <!-- DEPRECATED very expensive property name="c3p0.validate>-->


    </session-factory>
</hibernate-configuration>

当我第一次运行我的程序时,它会在数据库中创建表,但我的问题是字符集仍然是 latin1_swedish_ci (latin) 并且不是 utf8 我应该在 hibernate.hbm.xml 设置中更改什么?

【问题讨论】:

  • 你指的是哪个字符集? MySQL 至少知道其中四个:Server 字符集、Db 字符集、Client 字符集和 Conn. 字符集。
  • 服务器字符集和数据库字符集

标签: mysql hibernate unicode character-encoding


【解决方案1】:

我通过在my.cnf 中设置character-set-server 选项解决了这个问题:

[mysqld]
character-set-server=utf8

【讨论】:

    【解决方案2】:

    UTF-8 设置与 Hibernate 配置其与数据库的运行时连接的方式有关。我猜它对模式创建的东西没有影响,这实际上是 Hibernate 的一个独立部分。

    我发现自动 DDL 的东西只对在架构上生成初始刺很有用。我总是采用该 DDL 并将其修改为我想要的。

    【讨论】:

    • 您能详细解释一下 auto-DDL 以及我应该如何使用它吗?
    • 为什么休眠不理解我想创建 InnoDB 模式?因为默认是 MyISAM,但是当我使用 org.hibernate.dialect.MySQL5InnoDBDialect 时,它会将其更改为 InnoDB!!!
    • 我指的是您在配置中使用的 hbm2ddl.auto 设置。
    猜你喜欢
    • 2020-07-31
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2010-10-08
    相关资源
    最近更新 更多