【问题标题】:why generationtype.sequence in mysql doesn't work?为什么 mysql 中的 generationtype.sequence 不起作用?
【发布时间】:2013-05-03 17:13:53
【问题描述】:

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

【问题讨论】:

标签: java mysql hibernate hibernate-mapping


【解决方案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 不支持此功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2012-05-21
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    相关资源
    最近更新 更多