java - 设置Hibernate中表的存储引擎

标签 java mysql hibernate

我目前正在尝试为表设置存储引擎,因为根据具体情况应使用 MyISAM 和 InnoDB。不幸的是我没有找到在 Hibernate 中设置它的方法,并且我不想手动创建每个表。我更喜欢的方法是在 Java-POJO 中对其进行注释,但我找不到这样做的方法。

我找到了Hibernate: what's the difference between MySQLDialect and MySQLInnoDBDialect? ,它告诉我将方言设置为 org.hibernate.dialect.MySQLMyISAMDialect会有帮助(它是针对 InnoDB-Dialect 说的,但似乎可以用它来选择默认方言),但这种方法有两个缺点:第一,为所有表选择方言,第二,它创建一个查询喜欢 CREATE TABLE xy(..) type=MyISAM但查询是正确的 engine=MyISAM

还有Hibernate mysql innodb说有默认值,并且我可以在创建表时覆盖它们,但不知道如何覆盖它们 - 有人知道如何做到这一点吗?

最佳答案

而不是 org.hibernate.dialect.MySQLMyISAMDialectorg.hibernate.dialect.MySQLInnoDBDialect ,你应该使用org.hibernate.dialect.MySQL5MyISAMDialectorg.hibernate.dialect.MySQL5InnoDBDialect

这样,它就会使用engine=MyISAM 或engine=InnoDB 创建表。

但是这个配置是全局的,如果你确实有理由为单个表配置它,你可以尝试:

  • Hibernate 导入 SQL (hibernate.hbm2ddl.import_files)。添加包含更改表的 SQL 文件的路径。

关于java - 设置Hibernate中表的存储引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28628949/

相关文章:

java - 使用Java在远程PC上运行程序

java - 从 keystore 获取私钥

mysql - 我正在尝试使用 MySQL 查询从指定时间段查找未分配的时间

MySQL:使用 View 是否比运行 5+ JOIN 语句更快?

mysql - 在 hibernate 中执行复杂查询

java - 抛出 javax.validation.UnexpectedTypeException : HV000030 exception when validating Scala's Map with @NotEmpty

java - 如何在 Eclipse kepler 中安装 Hibernate?

java - 是否可以仅打印数组中的值? ( java )

java - 将 unicode 文字字符串打印为 Unicode 字符

php - 如何从 codeigniter 中的数据库表中获取特定值