Spring Boot:每次向客户端发出删除请求时,如何将实体 ID 重置回 0
Posted
技术标签:
【中文标题】Spring Boot:每次向客户端发出删除请求时,如何将实体 ID 重置回 0【英文标题】:Spring Boot: How can I reset the entity ID back to 0 every time I make Delete request with client 【发布时间】:2021-06-04 15:41:23 【问题描述】:我使用 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]
【问题讨论】:
【参考方案1】:不确定您使用的是什么持久层,但以下是 JPA 的示例,说明如何重置它
entityManager
.createNativeQuery("ALTER TABLE SomeTable AUTO_INCREMENT = 1")
.executeUpdate();
【讨论】:
我提前道歉,但我只是最近在学习。您能否将我链接到持久层是什么,以便我可以阅读它并为您提供更多信息?我到底把这个放在哪里?我尝试通过放置“@PersistenceContext private EntityManager entityManager;”将其放入服务中但我只是得到了一个错误。无论如何感谢您的回答。 不用担心。所以问题是你如何从 Spring Boot 应用程序连接到 DB?您使用的是 Spring-data、Spring-data-JPA、JPA-hibernate 等吗? 我正在使用 spring-data-JPA。如果该信息有帮助,我也将它连接到 mysql。 更新了我的帖子以提供更多详细信息。 您在上面所做的一切都是正确的,只需将 @Transactional 添加到您的类中,例如 @Transactional Public yourClass以上是关于Spring Boot:每次向客户端发出删除请求时,如何将实体 ID 重置回 0的主要内容,如果未能解决你的问题,请参考以下文章
java - 如何从Java Spring Boot中的请求标头获取不记名令牌?
基于Spring Boot 2.0.3的Spring Cloud Eureka Server与Client