我有一个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');
答案 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;
}