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

TransactionRequiredException Esecuzione di una query di aggiornamento/eliminazione

Non sono sicuro se questo aiuterà la tua situazione (ovvero se esiste ancora), tuttavia, dopo aver setacciato il Web per un problema simile.

Stavo creando una query nativa da un EntityManager di persistenza per eseguire un aggiornamento.

Query query = entityManager.createNativeQuery(queryString);

Stavo ricevendo il seguente errore:

causato da:javax.persistence.TransactionRequiredException:esecuzione di una query di aggiornamento/eliminazione

Molte soluzioni suggeriscono di aggiungere @Transactional al tuo metodo. Il solo fatto di eseguire questa operazione non ha cambiato l'errore.

Alcune soluzioni suggeriscono di chiedere a EntityManager una EntityTransaction in modo che tu possa chiamare start e impegnarti. Questo genera un altro errore:

causato da:java.lang.IllegalStateException:non è consentito creare transazioni su EntityManager condiviso - utilizzare invece transazioni Spring o EJBCMT

Ho quindi provato un metodo che la maggior parte dei siti dice sia per l'uso di gestori di entità gestiti dall'applicazione e non gestiti da container (che credo sia Spring) ed era joinTransaction() .

Avere @Transactional decorare il metodo e quindi chiamare joinTransaction() sull'oggetto EntityManager appena prima di chiamare query.executeUpdate() e il mio aggiornamento della query nativa ha funzionato.

Spero che questo aiuti qualcun altro a riscontrare questo problema.