2

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

4

1 回答 1

1

我要留下一个答案,所以这个问题可以从“未回答”的 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 不支持这个特性。

于 2021-03-29T20:05:40.123 回答