spring - 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]
解决方案
不确定您使用的是什么持久层,但以下是 JPA 的示例,说明如何重置它
entityManager
.createNativeQuery("ALTER TABLE SomeTable AUTO_INCREMENT = 1")
.executeUpdate();
推荐阅读
- javascript - React JS 将点击事件传递给另一个组件
- java - 嵌套异常是 java.lang.NoSuchMethodError: 'long com.google.common.io.ByteStreams.exhaust(java.io.InputStream)']
- git - 查看一个分支整体添加到另一个分支的更改
- python - OpenCV-n帧后读取
- sql - 为什么我在 Oracle Apex 上收到无效字符 ORA-00911 错误消息?
- amazon-web-services - 为什么 EC2 给我它不接受的公钥?
- npm - 使用外部 URL 安装 cypress
- python - 一个用python计算工资的程序
- python - 使用 tf.roll 增加移位值和堆栈
- php - 如何通过搜索从 udemy api 获取结果