JPA之TABLE主鍵生成策略

2021-08-21 03:19:44 字數 1694 閱讀 1069

準備工作:

需要在資料庫中建立一張第三方主鍵生成表,jpa會通過該錶和註解元資訊自動生成對應的主鍵值。

注意: 如果沒有手動建立該主鍵生成表,程式會報錯且jpa會自動生成名為hibernate_sequences的第三方表,該錶沒有任何作用。其內容如下:

測試sql**如下:

# ----建立主鍵生成表

create

table pk_generator_table(

`pk_column`

varchar(255),

`pk_value`

varchar(255)

)# ---- 插入主鍵生成表資料

insert

into pk_generator_table(`pk_column`,`pk_value`) values('id_customer','1');

建立的主鍵生成表如下:

pk_column

pk_value

id_customer1

jpa註解**如下:

//標註id的則視為主鍵

@id//配置生成主鍵策略

@tablegenerator(name="id_customer",

allocationsize=1,

table="pk_generator_table",

pkcolumnname="pk_column",

pkcolumnvalue="id_customer",

valuecolumnname="pk_value")

@generatedvalue(strategy=generationtype.table,generator="id_customer")

tablegenerator註解的name屬性值對應generatedvalue註解的generator屬性值。

generatedvaluestrategy屬性指定生成策略為table,此時表示該主鍵id採用第三方表來生成。

現對tablegenerator註解各屬性解釋如下:

屬性名解釋

name

對應generatedvalue的generator屬性值。通過倆者將其互相關聯

allocationsize

分配大小,指主鍵增長步長。這裡指定為1,則意思是主鍵每次增長為1。

table

對應第三方主鍵生成表名[代表jpa將使用哪個第三方表來主鍵值得計算]

pkcolumnname

指定第三方表中對應的某個列名

pkcolumnvalue

指定第三方表中對應的某個列的值,某個列指 pkcolumnname屬性中的指定的列名

valuecolumnname

指定生成的列名[對應第三方表的另外乙個列值]

jpa通過pkcolumnnamepkcolumnvaluevaluecolumnname三個屬性中的值對應出第三方表的各個列和值來得出要是使用的哪個點。

JPA 主鍵生成策略

hibernate主鍵標識為 id,其生成規則由 generatedvalue設定的 generatedvalue註解的strategy屬性指定具體的策略基本使用的有四種策略規則 表示自增策略,主鍵由資料庫生成 主要是自動增長型 比如 mysql可以在建立表時宣告 auto increment 來指...

JPA的主鍵生成策略

所謂的主鍵生成策略就是,自動生成主鍵列值的策略 identity id自增長策略。只能用於支援id自增長的資料庫。id identity就是強制使用id自增長策略,只能用於支援id自增長的資料庫 generatedvalue strategy generationtype.identity colu...

jpa設定自增主鍵 jpa主鍵生成策略

主鍵除了自己設定,還有很多種方法可以讓資料庫自動生成。將註解寫在實體類屬性上就可以獲得相應功能 註解 generatorvalue註解 jpa通用策略生成器 引數generationtype public enum generationtype table,特定表生成 見3 sequence,資料庫...