數據庫系列--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",會自動生成相應的序列。
如下:
id
創建序列代碼:

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章