我目前正在尝试为表设置存储引擎,因为应该使用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说有默认值,我可以在创建表时覆盖它们,但不知道如何 - 有人知道怎么做吗?
答案 0 :(得分:2)
您应该使用org.hibernate.dialect.MySQLMyISAMDialect
或org.hibernate.dialect.MySQLInnoDBDialect
,而不是org.hibernate.dialect.MySQL5MyISAMDialect
或org.hibernate.dialect.MySQL5InnoDBDialect
。
这样,它使用engine = MyISAM或engine = InnoDB创建表。
但是这个配置是全局的,如果你真的有理由为一个表配置它,你可以尝试: