Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用休眠将实体持久保存到我的数据库中。目前它是一个 derby 数据库,但我很快就会将它转移到一个 oracle 数据库中。
在我的 classname.hbm.xml 中,我将 id 定义为:
<id name="id" type="long"> <column name="ID"/> <generator class="increment"/> </id>
如何设置 id 的起始值?我希望它从 10000 而不是 1 开始。
“增量”对于 ID 生成来说并不是一个好主意。
如果您要迁移到 Oracle,那么您将使用一个序列来生成 ID,并且该序列由 oracle 控制,因此您可以让它以您想要的任何值开始。
Derby 从 10.6 开始支持序列,但您需要 Hibernate 3.6 才能使其工作..
我不认为你可以,似乎 IncrementGenerator 基于最高主键工作,所以除非你修复你的主键(我不推荐),否则你会被这个功能所困扰。
会推荐一种不同的策略,它在机器集群中也不安全......查看 Hibernate 文档,也许还有增强的标识符生成器:
http://docs.jboss.org/hibernate/stable/core/reference/en/html/mapping.html#mapping-declaration-id-enhanced
生成器类型增量查找表中的最大数字主键值并将其加一。
当使用的底层数据库是 Oracle 时,生成器类型native使用序列。您可以轻松地将序列的值增加到任意起始值。