2013-12-20 94 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

相關問題