在哪里放置hibernate.dialect.storage_engine属性

问题描述 投票:1回答:1

我使用MySQL5Dialect来取代MySQL5InnoDBDialect,因为旧版本已被弃用。

package org.hibernate.dialect;

/** A Dialect for MySQL 5 using InnoDB engine
 *
 * @author Gavin King,
 * @author Scott Marlow
 * @deprecated Use "hibernate.dialect.storage_engine=innodb" 
environment variable or JVM system property instead.
 */
@Deprecated
public class MySQL5InnoDBDialect extends MySQL5Dialect {

@Override
protected MySQLStorageEngine getDefaultMySQLStorageEngine() {
    return InnoDBStorageEngine.INSTANCE;
    }
}

我的hibernate.cfg.xml是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC  "-//Hibernate/Hibernate 
Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.id.new_generator_mappings">false</property>
    <property name="hibernate.hbm2ddl.auto">create</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <property name="hibernate.dialect.storage_engine">innodb</property>
    <property name="hibernate.cache.use_second_level_cache">false</property>
  </session-factory>
</hibernate-configuration>

可悲的是,Hibernate仍然使用engine=MyISAM创建表!

我应该在哪里放置hibernate.dialect.storage_engine属性,我无法从官方网页找到hibernate.cfg.xml的所有属性!这很令人不安!

任何有效的链接将不胜感激。

java mysql hibernate
1个回答
2
投票

根据这个HHH Issue你应该设置环境或JVM变量,如果你想坚持MySQL5Dialect

或者,您可以切换到MySQL55Dialect,它具有innoDb作为默认值:

public class MySQL55Dialect extends MySQL5Dialect {

        @Override
        protected MySQLStorageEngine getDefaultMySQLStorageEngine() {
                return InnoDBStorageEngine.INSTANCE;
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.