學過hibernate的都知道hibernate支援n種主鍵生成策略。但有一種比較詭異,就是sequence。眾所周知,oracle 表的主鍵生成策略是沒有自增(identity或者autoincrement)的,他是通過 sequence 來實現的。而mysql正好與oracle相反,mysql支援自增,恰好不支援 sequence。如果想要在mysql上應用sequence主鍵生成策略那就悲劇了。
但是天無絕人之路,問題總是有辦法解決的。hibernate為我們提供了其他的解決辦法。像一般,我們配置sequence的主鍵生成策略是這樣的:
xml**
xmlversion="1.0"
?>
<
package="com.example.entity"
>
<
class
name="foo"
>
<
idname="id"
>
<
generator
class="sequence"
>
generator
>
id>
class
>
>
但上面的配置在mysql下是行不通的,如果要適應mysql,需要做將配置改為:
xml**
xmlversion="1.0"
?>
<
package="com.example.entity"
>
<
class
name="foo"
>
<
idname="id"
>
<
generator
class="org.hibernate.id.enhanced.sequencestylegenerator"
>
<
param
name="initial_value"
>1000
param
>
<
param
name="increment_siz"
>1
param
>
<
param
name="sequence_name"
>hibernate_sequence
param
>
generator
>
id>
class
>
>
(以上配置是我在hibernate 3.6.1 上完成的)
摘自:bastengao
mysql 主鍵自增語句 MySQL 自增主鍵
以下僅考慮 innodb 儲存引擎。自增主鍵有兩個性質需要考慮 單調性每次插入一條資料,其 id 都是比上一條插入的資料的 id 大,就算上一條資料被刪除。連續性插入成功時,其資料的 id 和前一次插入成功時資料的 id 相鄰。自增主鍵的單調性 為何會有單調性的問題?這主要跟自增主鍵最大值的獲取方式...
MySQL設定主鍵自增和非主鍵自增
mysql 每張表只能有1個自動增長字段,這個自動增長字段即可作為主鍵,也可以用作非主鍵使用,但是請注意將自動增長字段當做非主鍵使用時必須必須為其新增唯一索引,否則系統將會報錯。例如 將自動增長字段設定為主鍵 create table t1 id int auto increment primary...
Oracle主鍵自增
1.建立資料表 create table test increase userid number 10 primary key,主鍵,自動增加 username varchar2 20 2.建立自動增長序列 create sequence testincrease sequence incremen...