[size=medium]@generatedvalue:主鍵的產生策略,通過strategy屬性指定。
主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。
1、auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increment。這個是預設選項,即如果只寫@generatedvalue,等價於@generatedvalue(strategy=generationtype.auto)。
2、identity 表自增長字段,oracle不支援這種方式。
3、sequence 通過序列產生主鍵,mysql不支援這種方式。
4、table 通過表產生主鍵,框架藉由表模擬序列產生主鍵,使用該策略可以使應用更易於資料庫移植。不同的jpa實現商生成的表名是不同的,如 openjpa生成openjpa_sequence_table表,hibernate生成乙個hibernate_sequences表,而toplink則生成sequence表。這些表都具有乙個序列名和對應值兩個字段,如seq_name和seq_count。
在我們的應用中,一般選用@generatedvalue(strategy=generationtype.auto)這種方式,自動選擇主鍵生成策略,以適應不同的資料庫移植。
如果使用hibernate對jpa的實現,可以使用hibernate對主鍵生成策略的擴充套件,通過hibernate的@genericgenerator實現。
@genericgenerator(name = "system-uuid", strategy = "uuid") 宣告乙個策略通用生成器,name為"system-uuid",策略strategy為"uuid"。
@generatedvalue(generator = "system-uuid") 用generator屬性指定要使用的策略生成器。
這是我在專案中使用的一種方式,生成32位的字串,是唯一的值。最通用的,適用於所有資料庫。[/size]
JPA的主鍵產生策略
generatedvalue 主鍵的產生策略,通過strategy屬性指定。主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。1 auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increme...
JPA的主鍵產生策略
generatedvalue 主鍵的產生策略,通過strategy屬性指定。主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。1 auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increme...
JPA的主鍵產生策略
generatedvalue 主鍵的產生策略,通過strategy屬性指定。主鍵產生策略通過generationtype來指定。generationtype是乙個列舉,它定義了主鍵產生策略的型別。1 auto 自動選擇乙個最適合底層資料庫的主鍵生成策略。如mysql會自動對應auto increme...