我有一個使用HSQL DB開發的應用程序,問題是我們正在使用JPA/Hibernate將它遷移到MySQL。 問題是舊模式沒有AUTO_INCREMENT主鍵:我如何使用JPA在不修改模式的情況下使用這種遞增鍵特徵?如何將不帶AUTO_INCREMENT主鍵的現有DB模式轉換爲具有AUTO_INCREMENT的鍵?
是否有一種機制來告訴hibernate將最後一個INSERTED_ID + 1用於下一次插入?
非常感謝,
我有一個使用HSQL DB開發的應用程序,問題是我們正在使用JPA/Hibernate將它遷移到MySQL。 問題是舊模式沒有AUTO_INCREMENT主鍵:我如何使用JPA在不修改模式的情況下使用這種遞增鍵特徵?如何將不帶AUTO_INCREMENT主鍵的現有DB模式轉換爲具有AUTO_INCREMENT的鍵?
是否有一種機制來告訴hibernate將最後一個INSERTED_ID + 1用於下一次插入?
非常感謝,
最安全的是創建表時使用MySQL AUTO_INCREMENT,如果你想開始除1以外的AUTO_INCREMENT值,你可以設置值與CREATE TABLE或ALTER TABLE,像這樣:
mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;
如果你不想在遷移到mysql的時候把這個小小的修改添加到模式中。您可以使用通過從啓動時的最大主鍵值計數構建的休眠ID生成器increment
。
真的很重要!與mysql AUTO_INCREMENT相比,在羣集中使用增量不安全。
返回一個長,通過在啓動時從最大主鍵值計數 構造一個IdentifierGenerator。在 羣集中使用不安全!
映射參數支持,但通常不需要:表,列。 (這些表參數指定的逗號分隔的表 名稱列表。)
產生長,短或者int獨特只有當沒有其它進程是 將數據插入類型的標識符。同一張桌子。不要在集羣中使用。
首先,非常感謝您的回覆。 我不知道如何配置Hibernate,因爲我使用JPA xml映射。有沒有一種方法可以將映射配置爲像您所說的那樣使用「hibernate HINT」? 再次感謝, – kaffein