【问题标题】:Hibernate with MySQL : Auto-Generate Id : Equivalent of Sequence (Oracle) in MySQL使用 MySQL 休眠:自动生成 ID:相当于 MySQL 中的序列 (Oracle)
【发布时间】:2010-07-23 14:07:25
【问题描述】:

据我了解,当“本机”类用于 Oracle 中的自动 id 生成时,会创建一个单一的休眠序列,从该序列中将所有 ID 提供给所需的任何表。

但我没有看到 MySQL 会发生这种情况。相反,每个表的 id 都以 1 开头。

如有错误请指正。

另外,如果我想在 MySQL 上发生同样的事情,应该怎么做。

谢谢大家。

拉吉。

【问题讨论】:

    标签: java mysql hibernate


    【解决方案1】:

    据我了解,当在 Oracle 中使用“本机”类生成自动 ID 时,会创建一个单一的休眠序列,从该序列中将所有 ID 提供给所需的任何表。

    如果您不指定任何序列名称,则会发生这种情况,与此不同:

    <generator class="sequence">
      <param name="sequence">employer_id_seq</param>
    </generator>
    

    实际上大多数时候,人们不想要一个唯一的序列,他们更喜欢每个表一个序列。

    但我认为 MySQL 不会发生这种情况。相反,每个表的 id 都以 1 开头。

    对于 MySQL,native 生成器将默认使用 identity 策略,即将使用每个表的标识列。

    另外,如果我想在 MySQL 上发生同样的事情,应该怎么做。

    同样,我猜您的意思是对所有实体使用顺序 ID。试试table 生成器:

    <generator class="table">
    </generator>
    

    但这不会像序列或标识列那样执行。此外,正如我已经写过的,人们通常倾向于不在实体之间共享 ID。我会再考虑一下。

    【讨论】:

      猜你喜欢
      • 2015-08-24
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      相关资源
      最近更新 更多