1,identity
采用数据库提供的主键生成机制,mysql常用(mysql提供了主键自增功能)。写法如下;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
2,sequence
采用序列的值设置主键,oracle常用。写法:
@Id
@SequenceGenerator(name = "SEQ_STORE", sequenceName = "SEQ_ID", allocationSize = 1) //name是生成器的别名,sequenceName才是数据库真正的序列名
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_STORE") //这里的generator使用别名
@Column(name = "id")
private Long id;
3,hilo
hilo(高低位方式high low)是hibernate最常用的一种生成方式,需要一张额外的表来保存hi的值,保存hi值的表至少有一条记录。可以跨数据库。数据库表如下:
表中需要有一条初始记录:
Java实体类写法如下: