我需要能夠獲得一個序列號(我不介意這一代中是否有漏洞),我認爲一個SQL序列將是完美匹配。用休眠支持的JPA2創建一個序列
我正在使用Play框架,它使用由hibernate支持的JPA2。
我現在的問題是,我似乎無法讓Hibernate生成序列作爲應用程序啓動時自動ddl更新的一部分。
關於使用@SequenceGenerator的每條文檔似乎都與實體標識相關,而不是如何定義獨立於實體標識的序列。
謝謝。
編輯:只是爲了給這個問題更多的上下文,我正在做的是實施一項服務,以保持高分,第一次玩家開始遊戲,它會問服務器的訪客帳戶。
訪客帳戶的用戶名採用播放器+數字形式,如「player123123」,其中數字將從我嘗試使用的序列中生成。
當用戶註冊時,他可以將用戶名更改爲自定義的用戶名,但不能以玩家+任何形式進行更改,以便名稱空間玩家+號碼可以免費用於訪客帳戶。編輯2:現在我通過定義一個永遠不會被使用的額外的無用實體,並使用來自該實體的序列,但它是一個醜陋的黑客攻擊。
爲我的具體問題忽略可能的解決方案(黑客攻擊),我想知道hibernate和jpa2是否有可能聲明額外的(不是用於id生成的)序列與某個實體關聯或獨立於任何實體並讓hibernate自動在數據庫中創建它們。
恕我直言,自動ddl更新是很有用的,當啓動一個快速n'骯髒的項目。一旦成熟,您應該擁有SQL腳本來在啓動應用程序之前自動創建模式。把這個序列創建指令放在這個腳本中。 – 2012-02-08 08:19:36
現在我處於項目的快速和骯髒的階段,所以我現在不想手動維護額外的SQL腳本,現在是時候把它投入生產了,我會這樣做。 – 2012-02-08 15:52:14
在數據庫中明確創建序列。 Hibernate不會知道它,所以它的自動DDL生成不會刪除它。 – 2012-02-08 17:06:13