休眠增量起始编号

时间:2009-08-18 22:06:21

标签: java oracle hibernate derby

我正在使用hibernate将实体持久化到我的数据库。目前它是一个德比数据库,但我很快就会把它转移到一个oracle数据库。

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

自10.6开始,Derby支持sequences,但你需要Hibernate 3.6才能将它带到work ..

答案 1 :(得分:2)

我认为你不能,看起来IncrementGenerator基于最高主键工作,所以除非你修复你的主键(我不建议你),你仍然坚持使用该功能。

会推荐一个不同的策略,它在一组机器上也不安全......看看Hibernate文档,也许是增强的标识符生成器:

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

答案 2 :(得分:1)

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

生成器类型 native 在使用的基础数据库是Oracle时使用序列。您可以轻松地将序列的值扩展为任意的起始值。