Hibernate的@GeneratedValue(strategy = GenerationType.AUTO)

3

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

我刚接触Hibernate,继承了一个广泛使用它的项目。Java对象有:

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

当我创建此类型的新实体时,会生成ID。随后创建的新实体的ID增加2。这是在哪里完成的?
此外,它会在我们的DEV和TEST环境中生成不同的ID,所以它与数据库有关。是否有某个“feeder”表/视图/序列或其他东西?
例如,如果我希望生成的ID从100,000,XXX开始,而不是10,XXX,并且每次增加100,我该如何进行更改?
请帮助一个新手。提前致谢。

2
这完全取决于那个数据库。 - Sotirios Delimanolis
1
怎么样?我正在使用Oracle 10G。 - user1435866
请查看这个答案 - Szymon Jednac
1
好的,使用的是 hibernate_sequence。谢谢。 - user1435866
1个回答

0

如上所述,这是由您的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

Oracle修改表的文档:修改表


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接