【问题标题】:Hibernate increment starting number休眠递增起始号
【发布时间】:2009-08-18 22:06:20
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java oracle hibernate derby


    【解决方案1】:

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

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

    Derby 从 10.6 开始支持 sequences,不过您需要 Hibernate 3.6 才能将其支持到 work..

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2017-02-19
          • 1970-01-01
          • 2010-11-01
          • 2018-11-26
          • 2011-03-25
          • 1970-01-01
          相关资源
          最近更新 更多