DML操作不支持JPAREPOSITORITION(DELETE)
我一直在尝试创建用户并之后将其作为测试的一部分删除,但是我继续遇到相同的错误 org.hibernate.hql.internal.queryexecutionrequestExexception:即使在DML操作之后不支持在我的存储库和控制器中不断更改代码。
这是我的存储库中的代码:
@Transactional
@Override
public void deleteById(long id) {
Query query = entityManager.createQuery(
"delete from UserModel as u where u.id=:id"
).setParameter("id", id);
query.getSingleResult();
query.executeUpdate();
}
这是我的控制器中的代码:
@DeleteMapping("/deleteUser")
public @ResponseBody
void deleteUser(@RequestParam long id) {
userRepository.deleteById(id);
ResponseEntity.ok(null);
}
I keep trying to create a user and delete it afterwards as a part of my tests, but I keep getting the same error org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations even after continuously changing the code in both my Repository and Controller.
This is the code in my Repository:
@Transactional
@Override
public void deleteById(long id) {
Query query = entityManager.createQuery(
"delete from UserModel as u where u.id=:id"
).setParameter("id", id);
query.getSingleResult();
query.executeUpdate();
}
This is the code in my Controller:
@DeleteMapping("/deleteUser")
public @ResponseBody
void deleteUser(@RequestParam long id) {
userRepository.deleteById(id);
ResponseEntity.ok(null);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为,由于
query.getSingleresult();
行,该例外是触发的,该行试图从删除查询中获取结果(这是查询的更新类型)。尝试这样更改代码:
I think the exception is triggering due to the
query.getSingleResult();
line which is trying to fetch a result from a DELETE query (which is an UPDATE type of query).Try changing the code like this: