2015-06-26 29 views
4

使用oracle/JPA Hibernate。我以下面的方式導入了在學生表下具有值的模式。這裏是我有下面的代碼的示例hibernate GenerationType.AUTO如何在Oracle中工作?

100 
85 
80 
70 
1 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
long id; 

現在,當一個新的學生被插入時,它不插入最大值即101(最大值+ 1)。但插入一些可用的值在 之間,如90.我不知道它是如何可能的?

內部是否休眠創建一些數據庫序列和使用,然後使用最後創建的值加1

+0

看看這個http://stackoverflow.com/questions/3068692/hibernate-sequence-on-oracle-generatedvaluestrategy-generationtype-auto – codeaholicguy

+0

然後保留'@GeneratedValue(strategy = GenerationType.SEQUENCE)' – Babel

回答

3

對於Oracle來說,是的,它會創建一個序列(可能命名爲hibernate_sequence)。

如果表中存在現有值,那麼您可能需要更新序列以使您的ID大於現有值(否則很快會出現主鍵錯誤)。

+0

我放棄了hibernate_sequence.But我怎麼能再次創建它。我預料它應該在應用程序服務器重新啓動時自動創建 – user3198603

+0

當我說「更新序列」時,爲什麼放棄它? – Kayaman

+0

我應該更新哪些內容。它是lastNumber嗎? – user3198603

相關問題