作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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>
但是当我运行我的项目时,我的数据库不包含任何表!
有人知道吗?谢谢
最佳答案
从您的配置中完全删除方言行。
假设您提供了正确的用户名/密码,Hibernate 可以根据底层数据库元数据检测要使用的方言。我从来没有遇到过 Hibernate 自动检测我的数据库版本的问题。它对于 MySQL 特别有用,因为 MySQL 可以使用不同版本的方言。
如果您看到以下异常
org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
这意味着您的用户名/密码不正确,Hibernate 无法连接到数据库,无法实际读取元数据来选择它自己的方言。
我发现使用 SQL 脚本设置数据库表,然后让 Hibernate 来验证
您的架构会更容易。不建议在生产环境中让 Hibernate 生成任何数据库结构(使用 create-update
或仅使用 update
),因为您失去了对数据库设置方式的控制。
TL;DR:让 Hibernate 选择它自己的方言。这将为您节省数小时的麻烦。
关于mysql - Hibernate MySQLMyISAMDialect 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27432130/
我正在使用 hibernate 4.2.1 和 MySQL 5.5 。 在 persistence.xml 我有这个:
我是一名优秀的程序员,十分优秀!