2009-12-07 99 views
1

我的問題是如何獲得使用NHibernate的自動增量ID列的MySQL數據庫中的下一個ID?獲取下一個ID

謝謝,

+2

請注意這一點。如果在某人向表中添加另一條記錄之前獲得下一個ID,則您的ID將不再是下一個記錄。 – DOK 2009-12-07 17:16:12

+0

我是唯一使用db – 2009-12-07 17:41:24

回答

0

如果你這樣做,你會創建一個競爭條件。爲了回答你的問題,我認爲Hibernate沒有具體的方式給你這些信息,因爲沒有應用程序可以給你這些信息。通過獲取「下一個ID」,在它將數據返回給您時,它可能已經失效。我能想到的最簡單的方法是獲取last_insert_id()併爲其添加+1。

爲什麼不發佈更多關於您正在努力完成的信息,我們可以爲您找到更好的解決方案?它下面

+0

我解釋了我的問題。 – 2009-12-08 12:07:23

2

基礎上進一步描述你給(?作爲一個答案),在我看來,你確實找NHibernate的功能,自動讀回數據庫生成的ID:identity

這將告訴NHibernate的該ID的值由數據庫在插入時確定,它不會作爲其INSERT語句的一部分發送值,並且在執行插入操作後將讀取ID列的值。但是,你必須告訴數據庫(表中的定義),它應該自動生成用於插入每條記錄的ID列的值...

0

只要你是只有作家到數據庫,然後您可以讓您的應用程序爲您保留序號並自行分配下一個號碼。

如果你想這樣做,那麼你會想確保你的應用程序計數器是線程安全的。

您還需要一種方法在重新啓動應用程序時獲取最後寫入的序列號。