为什么mysql中的generationtype.sequence不起作用?

时间:2013-05-09 09:09:19

标签: java mysql hibernate hibernate-mapping

我正在使用hibernate 4.1,zk 6.5和mySql 9.3开发应用程序,我尝试在我的代码中使用generationtype.sequence但不幸的是它返回了一个错误,在互联网上做了一些研究之后我发现MySQL不支持顺序,所以我使用@GeneratedValue(策略= GenerationType.IDENTITY),它解决了我的问题!但我想知道为什么序列不能与mySql一起使用?

1 个答案:

答案 0 :(得分:0)

我要留下一个答案,所以这个问题可以从“未回答”的 SOF 类别中删除。 KevinB,你可以留下答案,我会赞成的。 我只想关闭这个问题......不仅仅是“获得积分”。

但这里有一个具体的答案和参考。

简短版本:

MySql 没有“真实”序列。它使用 Sequence-via-a-Table 解决方法……如果您尝试执行大量 JPA 批处理,这将是一个瓶颈。

https://thorben-janssen.com/5-things-you-need-to-know-when-using-hibernate-with-mysql/

  1. 映射:主键 主键的有效处理和创建是应用程序的基本但最重要的部分之一。

JPA 规范的@GeneratedValue 注释允许您定义要用于创建唯一主键值的策略。您可以选择 SEQUENCE、IDENTITY、TABLE 和 AUTO。

总的来说,我推荐使用 SEQUENCE 策略,因为它允许 Hibernate 使用 JDBC 批处理和其他需要延迟执行 SQL INSERT 语句的优化策略。

但是您不能将这种策略用于 MySQL 数据库。它需要一个数据库序列,而 MySQL 不支持此功能。