在Hibernate中为表设置存储引擎

时间:2015-02-20 12:24:16

标签: java mysql hibernate

我目前正在尝试为表设置存储引擎,因为应该使用MyISAM和InnoDB。不幸的是我没有找到在Hibernate中设置它的方法,我不想手工创建每个表。我最喜欢的方法是在Java-POJO中对它进行旋转,但我找不到办法。

我找到了Hibernate: what's the difference between MySQLDialect and MySQLInnoDBDialect?,它告诉我将方言设置为org.hibernate.dialect.MySQLMyISAMDialect会有所帮助(它为InnoDB-Dialect说明了这一点,但似乎可以选择默认方言),但这种方法有两个缺点:第一,为所有表选择方言,第二,它创建一个像CREATE TABLE xy(..) type=MyISAM这样的查询,但查询对engine=MyISAM是正确的。

同样Hibernate mysql innodb说有默认值,我可以在创建表时覆盖它们,但不知道如何 - 有人知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

您应该使用org.hibernate.dialect.MySQLMyISAMDialectorg.hibernate.dialect.MySQLInnoDBDialect,而不是org.hibernate.dialect.MySQL5MyISAMDialectorg.hibernate.dialect.MySQL5InnoDBDialect

这样,它使用engine = MyISAM或engine = InnoDB创建表。

但是这个配置是全局的,如果你真的有理由为一个表配置它,你可以尝试:

  • Hibernate导入SQL(hibernate.hbm2ddl.import_files)。将路径添加到包含alter table的SQL文件中。