【问题标题】:Hibernate @GeneratedValue(strategy = GenerationType.AUTO)休眠@GeneratedValue(策略= GenerationType.AUTO)
【发布时间】:2013-12-20 16:19:57
【问题描述】:

那么自动生成函数“@GeneratedValue(strategy = GenerationType.AUTO)”究竟是如何工作的呢?

我是 Hibernate 的新手,并且继承了一个广泛使用的项目。 java 对象有:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)    
@Column(name="ID")    
private Long id;

当我创建这种类型的新实体时,会生成 ID。后续新实体的 ID 增加 2。具体是在哪里完成的?

此外,它会在我们的 DEV 和 TEST 环境中生成不同的 ID,因此它在某种程度上是特定于数据库的。是否有“馈线”表/视图/序列之类的?

例如,如果我希望生成的 ID 开始为 100,000,XXX 而不是 10,XXX 并增加 100,我将如何进行更改?

请帮助一个菜鸟。提前致谢。

【问题讨论】:

  • 这完全取决于那个数据库。
  • 怎么样?我正在使用 Oracle 10G
  • 查看this answer
  • 好的,使用的是hibernate_sequence。谢谢。

标签: java hibernate


【解决方案1】:

如前所述,这由您的 Oracle 数据库管理。如果 id 递增 2,那是因为有人将其设置为 2。 在 oracle 中,SET INCREMENT BY 将在标识列上指定增量。

要更改种子值,请使用 RESTART WITH。

ALTER TABLE mytable ALTER COLUMN id SET INCREMENT BY 100    
ALTER TABLE mytable ALTER COLUMN id RESTART WITH 100000000

alter table 的 Oracle 文档:Alter table

【讨论】:

    猜你喜欢
    • 2013-09-10
    • 2011-03-05
    • 2023-04-10
    • 2011-04-05
    • 2016-01-10
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多