首页 > 解决方案 > Spring Boot:每次向客户端发出删除请求时,如何将实体 ID 重置回 0

问题描述

我使用 Java Spring Boot 创建了一个服务器,并发出了一个删除请求,删除了存储库中的所有条目。我尝试将其添加回来,并且 ID 递增而不是从 0 开始。

@DeleteMapping("/donors")
public String deleteAllDOnors() {
    return donorService.deleteAllDonors();
}

@Id
@GeneratedValue
private Long id;

编辑。到目前为止,我在服务类中尝试过这个:

@PersistenceContext
EntityManager entityManager;

在同一个班:

public String deleteAllDonors() {
    entityManager
            .createNativeQuery("ALTER TABLE SomeTable AUTO_INCREMENT = 1")
            .executeUpdate();
    donorRepository.deleteAll();
    return "All donors removed!";
}

我得到一个

javax.persistence.TransactionRequiredException: Executing an update/delete query
at org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:422) ~[hibernate-core-5.4.28.Final.jar:5.4.28.Final]
at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1668) ~[hibernate-core-5.4.28.Final.jar:5.4.28.Final]

标签: springspring-bootspring-mvcjpaspring-data-jpa

解决方案


不确定您使用的是什么持久层,但以下是 JPA 的示例,说明如何重置它

entityManager
    .createNativeQuery("ALTER TABLE SomeTable AUTO_INCREMENT = 1")
    .executeUpdate();

推荐阅读