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.