2011-12-29 28 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