Hibernate用SchemaExport自動創建不了表

我的環境:MySql5、Hibernate5.2.11Final。

首先,用SchemaExport自動創建表,Hibernate5.2.11Final的寫法如下:

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
        Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
        SchemaExport schemaExport = new SchemaExport();
        schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata);

執行後hibernate自動生成如下SQL語句:

create table Score (
       studID integer not null,
        CourseID integer not null,
        result float,
        primary key (studID, CourseID)
    ) type=MyISAM

查看數據庫,表卻並沒有創建,而且執行hibernate的crud會出現”could not execute statement“的錯誤,並提示沒有查找到表。因此可以確定,在自動創建表的過程中出現問題。

於是把上面create table的sql語句放入navicat執行,報錯提示錯誤出現在type=MyISAM附近。

上網一查,原來是sql版本問題,在sql4時可以寫成type=MyISAM,但sql5變成了engine=MyISAM,因此猜測hibernate不知道我用的是sql5,於是更改cfg文件如下:

<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

將方言設置爲MYSQL5,加一個5進去。hibernate就能自動生成基於sql5的sql語句,執行測試單元,重啓navicat查看,表成功創建。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章