2011-12-29 29 views
3

我们使用MyISAM方言org.hibernate.dialect.MySQLMyISAMDialect在MySQL 5.5数据库上使用3.6.9.Final休眠提供程序基于JPA2自动生成DDL文件。MyISAM方言生成错误的DDL

The create SQL file gets generated as 
CREATE TABLE t (i INT) type = MYISAM; 
instead of 
CREATE TABLE t (i INT) ENGINE = MYISAM; 

这会导致表创建失败。

注意:这在5.1及更低版本中运行良好。我应该使用什么hibernate提供程序来解决这个问题。

回答

3

它被破坏了,MySQL在很久以前就放弃了对已弃用的“type =”的支持。在MyISAM的情况下,Hibernate没有包含任何工作实现。 InnoDB有单独的实现(MySQL5InnoDBDialect)。

你必须自己去实现它,还是只挑选现有的实现,如:http://code.google.com/p/snofyre/source/browse/trunk/snomed-osgi/uk.nhs.cfh.dsp.snomed.persistence/src/main/java/uk/nhs/cfh/dsp/snomed/persistence/orm/MySQL5MyISAMDialect.java

我估计使用的是InnoDB是不是你的选择吗?特别是由于缺乏事务处理,MyISAM与JPA并不合适。

+0

这可能是一个非常简单的修复hibernate,不知道为什么他们不能适应这种变化。 – priya 2011-12-30 13:57:16