JPA Spring Boot postgresql:插入带有最后一个ID的数据

时间:2017-12-12 15:51:48

标签: postgresql rest jpa spring-boot

我有一个MyClass实体,在项目部署时有一个自动增量id我有一个init.sql文件,通过添加两行来初始化MY_CLASS表 我使用我的Web服务REST在MY_CLASS表中插入一个新行的问题我有一个错误消息,第一次点击的ID为1的重复键,第二次点击的ID为2,但POST没有问题。要解决此问题,我可以在init.sql文件中添加以下行

ALTER SEQUENCE MY_CLASS_id_seq RESTART WITH 3;

我的问题:如何配置我的POST以保留具有最后一个id的数据,因为每当我可以使用SQL插入数据时。

@Entity
@Cacheable
@Getter
@Setter
@Table(name = "MY_CLASS")
public class MyClass {

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

    @NotNull
    private String label;

}



@RepositoryRestResource(collectionResourceRel = "clazz", path = "clazz")
public interface MyClassRepository extends PagingAndSortingRepository<MyClass, Long> {

}

init.sql

INSERT INTO public.MY_CLASS (label) values('label_1');
INSERT INTO public.MY_CLASS (label) values('label_2');

1 个答案:

答案 0 :(得分:1)

你不会使用序列生成器,不是吗?

public class MyClass {
     public static final String SEQUENCE_NAME = "MY_CLASS_id_seq";

     @Id
     @GeneratedValue(strategy = SEQUENCE, generator = SEQUENCE_NAME)
     @SequenceGenerator(name = SEQUENCE_NAME, sequenceName = SEQUENCE_NAME)
     private Long id;

     @NotNull
     private String label;
}