sql >> Databasteknik >  >> NoSQL >> MongoDB

TransactionRequiredException Kör en uppdatering/raderingsfråga

Jag är inte säker på om detta kommer att hjälpa din situation (det vill säga om den fortfarande existerar), men efter att ha letat igenom webben efter ett liknande problem.

Jag skapade en inbyggd fråga från en persistens EntityManager för att utföra en uppdatering.

Query query = entityManager.createNativeQuery(queryString);

Jag fick följande felmeddelande:

orsakad av:javax.persistence.TransactionRequiredException:Utför en uppdaterings-/raderingsfråga

Många lösningar föreslår att du lägger till @Transactional till din metod. Bara att göra detta ändrade inte felet.

Vissa lösningar föreslår att du ber EntityManager om en EntityTransaction så att du kan börja ringa och begå dig själv. Detta ger ett annat fel:

orsakad av:java.lang.IllegalStateException:Inte tillåtet att skapa transaktioner på delad EntityManager - använd Spring-transaktioner eller EJBCMT istället

Jag försökte sedan en metod som de flesta sajter säger är för användning av programhanterade enhetshanterare och inte containerhanterade (vilket jag tror Spring är) och det var joinTransaction() .

Har @Transactional dekorera metoden och sedan anropa joinTransaction() på EntityManager-objektet precis innan query.executeUpdate() anropas och min inbyggda frågeuppdatering fungerade.

Jag hoppas att detta hjälper någon annan som har det här problemet.



  1. MongoDb stängs av med kod 100

  2. Hur lagrar man resultat från dynamiskt genererade formulär i MongoDb?

  3. hur man importerar en .csv-datafil till Redis-databasen

  4. Hur kan jag få för närvarande autentiserad användare Principal med fjädersäkerhet och Redis i vårstartapplikation