我正在使用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>
但是当我运行我的项目时,我的数据库不包含任何表格!
有没有人有任何想法?! 感谢
答案 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选择自己的方言。它会为你节省数小时的烦恼。