主键的值以查询的形式从一个特定的表中获取,获取完之后修改主键值,理论上可以兼容任何数据库。
要配合@GeneratedValue注解—— 注解声明了主键的生成策略。有如下属性:
strategy 指定生成的策略(JPA 定义的),类型为GenerationType(枚举)。
默认是 GenerationType. AUTO
GenerationType.AUTO 主键由程序控制
GenerationType.TABLE 使用一个特定的数据库表来保存主键
GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型)
GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是
数据库支持序列。(这个值要与 generator 一起使用)generator 指定生成主键使用的生成器)。
@TableGenerator注解属性:
@TableGenerator(
name="generator", //生成器名称
table="GENERATOR", //指定表名
pkColumnName="pk_key", //Primary key Column Name 表示在持久化表中,该主键生成策略所对应键值的名称 字符串类型
valueColumnName="pk_value", //表示在持久化表中,该主键当前所生成的值 整型
pkColumnValue="TEACHER",