@GeneratedValue和@SequenceGenerator介绍
@GeneratedValue和@SequenceGenerator是JPA标准注解,GeneratedValue用来定义主键生成策略,SequenceGenerator用来定义一个生成主键的序列;它们要联合使用才有效。下面介绍一个使用Oracle序列生成主键的方法
1、数据库中先定义一个Oracle序列,如名字为SEQ_BDF2_USER
2、在Entity实体类中通过使用注解@SequenceGenerator声明定义好的序列SEQ_BDF2_USER,名称为ID_SEQ。有两种声明方法,可以在类前面进行声明,也可以在字段上进行声明,如图:
3、在主键字段id上使用注解GeneratedValue定义主键生成策略为序列,并引用声明好的序列ID_SEQ。如图:
@SequenceGenerator — 注解声明了一个数据库序列。
属性:
name - 表示该表主键生成策略名称,它被引用在@GeneratedValue中设置的“gernerator”值中。
sequenceName - 表示生成策略用到的数据库序列名称。
initialValue - 表示主键初始值,默认为0.
allocationSize - 每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50.