sql >> Base de Datos >  >> NoSQL >> MongoDB

TransactionRequiredException Ejecutando una consulta de actualización/eliminación

No estoy seguro de si esto ayudará a su situación (es decir, si todavía existe), sin embargo, después de buscar en la web un problema similar.

Estaba creando una consulta nativa desde un EntityManager de persistencia para realizar una actualización.

Query query = entityManager.createNativeQuery(queryString);

Estaba recibiendo el siguiente error:

causado por:javax.persistence.TransactionRequiredException:Ejecutando una consulta de actualización/eliminación

Muchas soluciones sugieren agregar @Transactional a su método. Solo hacer esto no cambió el error.

Algunas soluciones sugieren pedirle al EntityManager una EntityTransaction para que pueda llamar a begin y comprometerse. Esto genera otro error:

causado por:java.lang.IllegalStateException:No se permite crear transacciones en EntityManager compartido; use transacciones Spring o EJBCMT en su lugar

Luego probé un método que la mayoría de los sitios dicen que es para usar administradores de entidades administradas por aplicaciones y no administrados por contenedores (que creo que es Spring) y eso fue joinTransaction() .

Tener @Transactional decorando el método y luego llamando a joinTransaction() en el objeto EntityManager justo antes de llamar a query.executeUpdate() y mi actualización de consulta nativa funcionó.

Espero que esto ayude a alguien más que esté experimentando este problema.