Hibernate 註解 主鍵生成策略

2021-07-09 12:23:01 字數 2612 閱讀 4740

1、hibernate註解(annoation)使用id主鍵生成主要要使用到以下幾個註解: @id,@generatedvalue,@genericgenerator。@generatedvalue的作用是jpa的預設實現自定義主鍵生成策略,@genericgenerator是hibernate在jpa的基礎上增強。

2、自定義主鍵生成策略,由@genericgenerator實現。hibernate在jpa的基礎上進行了擴充套件,可以用一下方式引入hibernate獨有的主鍵生成策略,就是通過@genericgenerator加入的。

列如標準jpa用法:

@id

@generatedvalue(generationtype.auto)

可以使用hibernate特有方式:

@id

@generatedvalue(strategy = generationtype.auto)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「native」) //name為主鍵生成器,名字隨便取

ps:如果想要不同的表使用相同的主鍵生成器,可以把他的generator的name屬性設為相同即可,例如:

@id

@generatedvalue(name=」id1」)

@genericgenerator(name=」id1」,strategy=」identity」)

保證@generatedvalue name 與 @genericgenerator name相同就可以了

3、使用@generatedvalue

3.1 針對mysql,oracle,sqlserver資料庫可以同時使用

3.2 配合使用@genericgenerator 不單獨使用

4、上面十二種策略,加上native,hibernate一共預設支援十三種生成策略

1、native

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「native」)

2、uuid 通常用的

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「uuid」)

3、hilo

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「hilo」)

4、assigned

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「assigned」)

5、identity

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「identity」)

6、select

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name=」select」, strategy=」select」, parameters = )

7、sequence

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「sequence」, parameters = )

8、seqhilo

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「seqhilo」, parameters = )

9、increment

@generatedvalue(generator = 「paymentablegenerator」)

@genericgenerator(name = 「paymentablegenerator」, strategy = 「increment」)

常見問題:

batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1這個異常是由於主鍵設定為自增長,而在我們插入記錄的時候設定了id的值導致的。

專案中例子

hibernate註解主鍵生成策略

generatedvalue,jpa通用策略生成器 jpa提供的四種標準用法為table,sequence,identity,auto.table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。id generatedvalue strat...

hibernate註解主鍵生成策略

generatedvalue,jpa通用策略生成器 jpa提供的四種標準用法為table,sequence,identity,auto.table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。id generatedvalue strat...

hibernate主鍵生成

hibernate的主鍵生成器 generator元素 表示了乙個主鍵生成器,它用來為持久化類例項生成唯一的標識 1.1 程式設計師自己控制 assigned 1.2 資料庫控制 identity 標識列 自動增長 sequence 1.3 hibernate控制 increment uuid uu...