问题 什么Hibernate 3.5.1方言最适合访问MySQL 5.1


现在我正在使用InnoDB表但是如果我在数据库中使用多个引擎会让我感到困惑的是什么?

由于我在标题中使用了“最佳”,它警告说这个问题是主观的,但考虑到有问题的方言数量非常有限,我不明白它们之间的区别因素(最好的) 我需要在答案中解释这一点。

这里有参考org.hibernate.dialect下的问题方言:

  • MySQL5Dialect
  • MySQL5InnoDBDialect
  • MySQLDialect
  • MySQLInnoDBDialect
  • MySQLMyISAMDialect

11391
2018-01-27 00:28


起源



答案:


MySQL InnoDB强制执行参照完整性; ISAM没有。

MySQL版本5与早期版本不同。

MySQLDialect可能是第一个Hibernate实现的遗留问题,当时没有这样的选择。

选择最适合您的MySQL版本(来自您的问题的版本5)以及您用于创建MySQL数据库的实现。


14
2018-01-27 00:32



好吧看起来非常直接,我被提示在jpa2条件查询后抛出“javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法执行查询”,如果我使用的是MySQL5Dialect,MySQLDialect或MySQL5InnoDBDialect。这将成为另一个问题的主题。 - Quaternion
您是否应该在创建MySQL表时询问InnoDB? - duffymo
是的,将列命名为保留字“group”是一个愚蠢的问题。我发现如果我将列名称注释从“group”重命名为“group“但我担心这可能会导致问题所以我只是重命名了这个列并重新生成了实体。 - Quaternion


答案:


MySQL InnoDB强制执行参照完整性; ISAM没有。

MySQL版本5与早期版本不同。

MySQLDialect可能是第一个Hibernate实现的遗留问题,当时没有这样的选择。

选择最适合您的MySQL版本(来自您的问题的版本5)以及您用于创建MySQL数据库的实现。


14
2018-01-27 00:32



好吧看起来非常直接,我被提示在jpa2条件查询后抛出“javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法执行查询”,如果我使用的是MySQL5Dialect,MySQLDialect或MySQL5InnoDBDialect。这将成为另一个问题的主题。 - Quaternion
您是否应该在创建MySQL表时询问InnoDB? - duffymo
是的,将列命名为保留字“group”是一个愚蠢的问题。我发现如果我将列名称注释从“group”重命名为“group“但我担心这可能会导致问题所以我只是重命名了这个列并重新生成了实体。 - Quaternion