1.assigned
1).可跨数据库,int类型,数据库可设置自动增长列,但是可不赋值,也可赋值,但赋值后书库所增加的值还是自动增长列的值
2.identity
1).数据有数据库生成。int类型,但是主键必须是自动增长列,
支持其他的数据库出来oracle因为oracle只有序列
3.sequence
1).有数据库提供的sequence生成主键,但是由于每次自增所形成的主键
不一致,所以数据也会不是一个一个的增加的,
因此我们需要使用同一个序列化,设置:
<generator class="assigned" >
<param name="sequence或者sequence_name(现在使用的mysql的版本是这个)">abc</param>
</generator>
4.increment
1).每次从hibernate取出最大的主键,(与数据库交互两次),
每次增量1
5.uuid
1).十六进制的数据
6.guid
1).先从数据库中获取uuid()在赋值给id
7.native
1).完美结合个数据库,由hibernate自行判断数据是
属于sequence的主键类型还是identity的主键类型,
注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。
如果Oracle中没有该序列,连Oracle数据库时会报错。
8、hilo:
通过高低位合成id,先建表hi_value,再建列next_value。必须要有初始值。
<id name="id" column="id">
<generator class="hilo">
<param name="table">high_val</param>
<param name="column">nextval</param>
<param name="max_lo">5</param>
</generator>
</id>
9、sequencehilo:
同过高低位合成id,建一个sequence序列,不用建表。
<id name="id" column="id">
<generator class="hilo">
<param name="sequence">high_val_seq</param>
<param name="max_lo">5</param>
</generator>
</id>