Spring REST@DeleteMapping-不允许在共享EntityManager上创建事务
当我在邮寄地址上使用DELETE时http://localhost:8081/api/data/removedata/1 我收到一条消息响应:“不允许在共享EntityManager上创建事务-改用Spring事务或EJB CMT” 这是java代码Spring REST@DeleteMapping-不允许在共享EntityManager上创建事务,spring,rest,Spring,Rest,当我在邮寄地址上使用DELETE时http://localhost:8081/api/data/removedata/1 我收到一条消息响应:“不允许在共享EntityManager上创建事务-改用Spring事务或EJB CMT” 这是java代码 @DeleteMapping("/removedata/{id}") public ResponseEntity deleteData(@PathVariable String id) { lon
@DeleteMapping("/removedata/{id}")
public ResponseEntity deleteData(@PathVariable String id) {
long remInt = Long.parseLong(id);
Data dataRem = em.find(Data.class, remInt);
em.getTransaction().begin();
em.remove(dataRem);
em.getTransaction().commit();
return ResponseEntity.ok(new MessageResponse("Data removed"));
}
我做错了什么?ps我是一个新手,仍在努力学习基础知识。通过添加@Transactional like so解决了这个问题:
@Transactional
@DeleteMapping("/removedata/{id}")
public ResponseEntity deleteData(@PathVariable String id) {
long remInt = Long.parseLong(id);
Data dataRem = em.find(Data.class, remInt);
em.getTransaction().begin();
em.remove(dataRem);
em.getTransaction().commit();
return ResponseEntity.ok(new MessageResponse("Data removed"));
}
这个em EntityManager来自哪里?您肯定应该了解Spring框架的事务支持,它是在@DeleteMapping之上创建的,如下所示:``@PersistenceContext private EntityManager em;````但是我解决了这个问题,忘记添加@Transactional^^