Spring REST@DeleteMapping-不允许在共享EntityManager上创建事务

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

当我在邮寄地址上使用DELETE时http://localhost:8081/api/data/removedata/1

我收到一条消息响应:“不允许在共享EntityManager上创建事务-改用Spring事务或EJB CMT”

这是java代码

    @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^^