#spring #rest
#spring #rest
Вопрос:
Когда я использую DELETE в postman по адресу http://localhost:8081/api/data/removedata/1
я получаю ответ на сообщение: «Не разрешено создавать транзакции в общем EntityManager — вместо этого используйте Spring transactions или 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 я новичок, все еще борющийся с основами.
Комментарии:
1. Откуда берется этот em EntityManager? И вам обязательно следует прочитать о поддержке транзакций Spring Framework docs.spring.io/spring/docs/current/spring-framework-reference /…
2. она была создана над @DeleteMapping следующим образом: `@PersistenceContext private EntityManager em; « Однако я решил проблему, забыл добавить @Transactional ^^
Ответ №1:
Эта проблема была решена путем добавления @Transactional следующим образом:
@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"));
}