1.increment
适合所有数据库,不要用在多进程,主键类型是整数
select max(id) from student
2.identity
支持DB2、mysql、sql server 、Sybase 主键类型是整数 但不适用oracle
3.sequence
适用于DB2、Oracle等 主键类型也是整数类型
4.native
会根据数据库的类型来选择是用identity、sequence、还是hilo 主键类型也是数值型 select hibernate_sequence.nextval from dual 所以它会重新创建一个序列
5.hilo (高低位算法)
自动创建表
<id name="id" type="java.lang.Integer">
<generator class="native "/>
<para name="table">表名</para>
<para name="column">字段名</para>
</id>
6.uuid
只能适用于字符串,不能是数值型,否则会报错 会根绝uuid算法产生128-bit 的字串
7.assigned
是用户自己设置主键 所以主键属性类型可以是任意类型
8.复合主键
把设置的主键的字段组合成一个类 (尽量不要用,数据不稳定,效率比较低)
9.foreign
在one-to-one的使用
数值类型:
Oracle :sequence
Mysql:increment
Sql Server:identity
native都使用哈...
字串使用UUID 或者assigned
one-to-one时,使用foreign