弹簧数据JPA:主键不是顺序自动增量

时间:2018-03-27 15:32:24

标签: postgresql spring-data-jpa primary-key

在spring数据中jpa Application我用@entity注释创建了一个模型。我将该模型数据保存到表中。我正在自动递增主键。但是当我将数据保存到表中时,它不是按顺序自动递增的。

 <ul id="ul-graellatab-list" class="tabs">
   <li><a href="#" class="tabs_menu default">Temperature</a></li>
   <li><a href="#" class="tabs_menu">Humidity</a></li>
   <li><a href="#" class="tabs_menu">Pressure</a></li>
 </ul>

类文件

@GeneratedValue(strategy = GenerationType.AUTO)

enter image description here

任何人都能告诉我为什么主键不是自动递增的吗?为什么不采取2,3,4 .....

1 个答案:

答案 0 :(得分:1)

首先尝试设置 allocationSize

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "exception_seq_generator")
@SequenceGenerator(name = "exception_seq_generator", sequenceName = "exception_seq", allocationSize=1)
@Column(name="exception_id")
public Integer exceptionId;

同时检查数据库中的当前序列,它现在可能有错误的值。

更简单的方法:

将PostgreSQL DB中的主键列定义为SERIAL:

CREATE TABLE xy (
   id SERIAL PRIMARY KEY;
);

用以下内容注释列:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

SERIAL类型为您创建一个自动增量序列,并且您在JPA实体中没有那么多开销。