Jeg er ikke sikker på, om dette vil hjælpe din situation (det vil sige, hvis den stadig eksisterer), men efter at have gennemsøgt nettet for et lignende problem.
Jeg oprettede en indbygget forespørgsel fra en persistens EntityManager for at udføre en opdatering.
Query query = entityManager.createNativeQuery(queryString);
Jeg modtog følgende fejl:
forårsaget af:javax.persistence.TransactionRequiredException:Udførelse af en opdatering/slet-forespørgsel
Mange løsninger foreslår at tilføje @Transactional til din metode. Bare det at gøre dette ændrede ikke fejlen.
Nogle løsninger foreslår at bede EntityManager om en EntityTransaction
så du kan begynde at ringe og begå dig selv. Dette giver endnu en fejl:
forårsaget af:java.lang.IllegalStateException:Ikke tilladt at oprette transaktion på delt EntityManager - brug Spring-transaktioner eller EJBCMT i stedet
Jeg prøvede derefter en metode, som de fleste websteder siger er til brug for applikationsstyrede enhedsadministratorer og ikke containeradministreret (hvilket jeg tror, Spring er), og det var joinTransaction()
.
Med @Transactional
dekorere metoden og derefter kalde joinTransaction()
på EntityManager-objektet lige før kald query.executeUpdate()
og min oprindelige forespørgselsopdatering virkede.
Jeg håber, at dette hjælper en anden, der oplever dette problem.