【发布时间】:2010-07-23 14:07:25
【问题描述】:
据我了解,当“本机”类用于 Oracle 中的自动 id 生成时,会创建一个单一的休眠序列,从该序列中将所有 ID 提供给所需的任何表。
但我没有看到 MySQL 会发生这种情况。相反,每个表的 id 都以 1 开头。
如有错误请指正。
另外,如果我想在 MySQL 上发生同样的事情,应该怎么做。
谢谢大家。
拉吉。
【问题讨论】:
据我了解,当“本机”类用于 Oracle 中的自动 id 生成时,会创建一个单一的休眠序列,从该序列中将所有 ID 提供给所需的任何表。
但我没有看到 MySQL 会发生这种情况。相反,每个表的 id 都以 1 开头。
如有错误请指正。
另外,如果我想在 MySQL 上发生同样的事情,应该怎么做。
谢谢大家。
拉吉。
【问题讨论】:
据我了解,当在 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。我会再考虑一下。
【讨论】: