我使用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
的所有属性!这很令人不安!
任何有效的链接都将受到赞赏。
答案 0 :(得分:2)
根据这个HHH Issue,如果你想坚持使用MySQL5Dialect
,你应该设置环境或JVM变量。
或者,您可以切换到默认为innoDb
的MySQL55Dialect:
public class MySQL55Dialect extends MySQL5Dialect {
@Override
protected MySQLStorageEngine getDefaultMySQLStorageEngine() {
return InnoDBStorageEngine.INSTANCE;
}
}
答案 1 :(得分:0)
将xml配置文件中的属性 hibernate.dialect 设置为 MySQL5Dialect
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
,然后为您的应用程序设置JVM选项 hibernate.dialect.storage_engine = innodb 。如果是可运行的jar,它将类似于:
java -Xmx4G -Dhibernate.dialect.storage_engine=innodb -jar application.jar
或者对于某些Web应用程序容器(例如Tomcat),添加
-Dhibernate.dialect.storage_engine=innodb
配置容器/ Web服务器。