1.increment
自增序列,由hibernate维护。初始值为1,只支持int long和short。不适合多线程并发更新数据库,适合单一进程访问数据库。不能用于群集环境
2. identity
与底层数据库有关,要求数据库支持identify,如MySQL中是auto_increment,SQL Server中是Identify.支持的数据库有MySQL,SQL Server,DB2,Sybase和HypersonicSQL.只支持int long和short
3. sequence
需要底层数据库的支持序列,支持序列的数据库有DB2,PostgreSQL,Oracle,SAPDB等。只支持int long和short
4. hilo
通过hilo算法生成主键,要求当前数据库里有表hibernate_unique_key,并且只有一个int类型字段next_hi,必须有一行数据,而且不能更改。能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。hilo主键生成方式由Hibernate维护,所以hilo方式与底层数据库无关。但不应该手动修改hi/lo算法使用的表的值,否则会引起主建重复的异常
5. seqhilo
使用方法与hilo方式类似,通过hi/lo算法生成主键,但要求底层数据库支持sequence,如Oracle,DB2
6. uuid
通过一种算法生成string类型32位的主键,保证生成的主键唯一。
生成主键例子: 8acca38b1c3625bf011c3625c2920001
7. guid
一种特殊的算法。支持SQL Server,MySQL. 在使用SQL Server时,表定义中的字段的类型指定为uniqueidentifier
(到现在还没找到比较好的解释)
8. native
根据不同的底层数据库,采用不同的主键生成方式。如MySQL使用Idetify方式,Oracle使用Sequence方式,项目中如果用到多个数据库时,可以使用native方式
9. assigned
主键由程序自己维护,一个持久类在被save()前必须手动指派一个主键
10. select
retrieves a primary key assigned by a database trigger by selecting the row by some unique key and retrieving the primary key value.
官方文档原文如上。
11. foreign
用于一对一关联映射。
--转自
该贴由koei123转至本版2015-7-14 11:05:58