sql >> Database teknologi >  >> NoSQL >> MongoDB

TransactionRequiredException Udførelse af en opdatering/sletningsforespørgsel

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.



  1. Medbring dine egne Azure-konti – Hosting til MongoDB® &Redis™ hos ScaleGrid

  2. MongoDB sort()

  3. Hvordan får man alle ventende job i laravel-køen på redis?

  4. Hvad er MongoDB, og hvordan virker det?