2013-12-20 90 views
2

那么自动生成函数“@GeneratedValue(strategy = GenerationType.AUTO)”的工作原理是什么?Hibernate @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,那么我将如何着手进行此更改?

请帮助一个noob。提前致谢。

+2

这完全取决于该数据库上。 –

+1

如何?我正在使用Oracle 10G – user1435866

+0

看看[这个答案](http://stackoverflow.com/a/3068856/1535738)。 –

回答

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 

了解alter table的Oracle文档:Alter table

相关问题