我正在使用hibernate 4.1,zk 6.5和mySql 9.3开发应用程序,我尝试在我的代码中使用generationtype.sequence但不幸的是它返回了一个错误,在互联网上做了一些研究之后我发现MySQL不支持顺序,所以我使用@GeneratedValue(策略= GenerationType.IDENTITY),它解决了我的问题!但我想知道为什么序列不能与mySql一起使用?
答案 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/
JPA 规范的@GeneratedValue 注释允许您定义要用于创建唯一主键值的策略。您可以选择 SEQUENCE、IDENTITY、TABLE 和 AUTO。
总的来说,我推荐使用 SEQUENCE 策略,因为它允许 Hibernate 使用 JDBC 批处理和其他需要延迟执行 SQL INSERT 语句的优化策略。
但是您不能将这种策略用于 MySQL 数据库。它需要一个数据库序列,而 MySQL 不支持此功能。