数据库系列--postgreSQL序列与id自增长

1 问题背景

将entity实体对象使用JPA持久化persist到数据库时,需要设置id的自增长方式。代码片段如下:
  
(postgreSQL9.9.5)

@Id
	@SequenceGenerator(name = "engine_info_seq", sequenceName = "engine_info_id_seq", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "engine_info_seq")
	private Integer id;

然而并无法实现id的自增长。
原因很简单,无法找到名为engine_info_id_seq的SEQUENCE(序列)。

2 序列与id自增长的关系

个人理解:
所谓的自增长,实际上是将手动添加id的任务交给了序列SEQUENCE,定义好SEQUENCE的总长度,启始值,每次增长的幅度等等。
下面是SEQUENCE的生成代码:

CREATE SEQUENCE public.engine_info_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 126
  CACHE 1;
ALTER TABLE public.engine_info_id_seq
  OWNER TO postgres;

3 实现id自增长的完整步骤

在创建id字段时,需要将id的类型设置为"serial",会自动生成相应的序列。
如下:
数据库系列--postgreSQL序列与id自增长_第1张图片
创建序列代码:

CREATE SEQUENCE public.engine_info_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 126
  CACHE 1;
ALTER TABLE public.engine_info_id_seq
  OWNER TO postgres;

你可能感兴趣的:(postgresql)