2

我正在使用休眠将实体持久保存到我的数据库中。目前它是一个 derby 数据库,但我很快就会将它转移到一个 oracle 数据库中。

在我的 classname.hbm.xml 中,我将 id 定义为:

<id name="id" type="long">
      <column name="ID"/>
      <generator class="increment"/>
</id>

如何设置 id 的起始值?我希望它从 10000 而不是 1 开始。

4

3 回答 3

5

“增量”对于 ID 生成来说并不是一个好主意。

如果您要迁移到 Oracle,那么您将使用一个序列来生成 ID,并且该序列由 oracle 控制,因此您可以让它以您想要的任何值开始。

Derby 从 10.6 开始支持序列,但您需要 Hibernate 3.6 才能使其工作..

于 2009-08-18T22:16:23.987 回答
2

我不认为你可以,似乎 IncrementGenerator 基于最高主键工作,所以除非你修复你的主键(我不推荐),否则你会被这个功能所困扰。

会推荐一种不同的策略,它在机器集群中也不安全......查看 Hibernate 文档,也许还有增强的标识符生成器:

http://docs.jboss.org/hibernate/stable/core/reference/en/html/mapping.html#mapping-declaration-id-enhanced

于 2009-08-18T22:18:25.980 回答
1

生成器类型增量查找表中的最大数字主键值并将其加一。

当使用的底层数据库是 Oracle 时,生成器类型native使用序列。您可以轻松地将序列的值增加到任意起始值。

于 2009-08-18T22:20:00.547 回答