sql >> Database >  >> NoSQL >> MongoDB

TransactionRequiredException Een update/verwijder-query uitvoeren

Ik weet echter niet zeker of dit uw situatie zal helpen (als het nog steeds bestaat), nadat ik op internet naar een soortgelijk probleem heb gezocht.

Ik was een native query aan het maken van een persistentie EntityManager om een ​​update uit te voeren.

Query query = entityManager.createNativeQuery(queryString);

Ik kreeg de volgende foutmelding:

veroorzaakt door:javax.persistence.TransactionRequiredException:uitvoeren van een update/verwijder-query

Veel oplossingen stellen voor om @Transactional aan uw methode toe te voegen. Als u dit doet, verandert de fout niet.

Sommige oplossingen stellen voor om de EntityManager om een ​​EntityTransaction te vragen zodat je begin kunt bellen en jezelf kunt committen. Dit geeft nog een fout:

veroorzaakt door:java.lang.IllegalStateException:mag geen transactie maken op gedeelde EntityManager - gebruik in plaats daarvan Spring-transacties of EJBCMT

Ik heb toen een methode geprobeerd waarvan de meeste sites zeggen dat deze bedoeld is voor toepassingsbeheerde entiteitsmanagers en niet voor containerbeheer (wat volgens Spring is) en dat was joinTransaction() .

Met @Transactional de methode verfraaien en vervolgens joinTransaction() . aanroepen op EntityManager-object net voor het aanroepen van query.executeUpdate() en mijn native query-update werkte.

Ik hoop dat dit iemand anders helpt die dit probleem ervaart.



  1. Foreman stopt per direct

  2. best practice van django + PyMongo pooling?

  3. Importeer CSV-gegevens als een array in MongoDB met behulp van mongoimport

  4. Nodejs prestatie-optimalisatie