Hibernate MySQLMyISAMDialect不起作用?

时间:2014-12-11 20:50:02

标签: mysql hibernate jpa myisam

我正在使用hibernate 4.2.1和MySQL 5.5。

在persistence.xml中我有这个:

<!-- ... -->
<properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.dialect"  value="org.hibernate.dialect.MySQLMyISAMDialect" />

</properties>

但是当我运行我的项目时,我的数据库不包含任何表格!

有没有人有任何想法?! 感谢

1 个答案:

答案 0 :(得分:0)

完全从配置中删除方言行。

假设您为其提供正确的用户名/密码,Hibernate可以根据底层数据库元数据检测要使用的方言。我从未遇到过Hibernate自动检测数据库版本的问题。它对MySQL特别有用,因为MySQL可以使用不同版本的方言。

如果您看到以下异常

org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set

这意味着您的用户名/密码不正确,并且Hibernate无法连接到数据库,实际读取元数据以选择它自己的方言。

我发现使用SQL脚本设置数据库表更容易,然后让Hibernate到你的架构validate。不建议在生产环境中使用Hibernate生成任何数据库结构(使用create-update或仅update),因为您无法控制数据库的设置方式。

TL; DR:让Hibernate选择自己的方言。它会为你节省数小时的烦恼。