MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

TransactionRequiredException Executando uma consulta de atualização/exclusão


Não tenho certeza se isso ajudará sua situação (ou seja, se ainda existir), no entanto, depois de vasculhar a web em busca de um problema semelhante.

Eu estava criando uma consulta nativa de um EntityManager de persistência para realizar uma atualização.
Query query = entityManager.createNativeQuery(queryString);

Eu estava recebendo o seguinte erro:

causado por:javax.persistence.TransactionRequiredException:Executando uma consulta de atualização/exclusão

Muitas soluções sugerem adicionar @Transactional ao seu método. Apenas fazer isso não alterou o erro.

Algumas soluções sugerem solicitar ao EntityManager uma EntityTransaction para que você possa chamar begin e commit. Isso gera outro erro:

causado por:java.lang.IllegalStateException:Não é permitido criartransação no EntityManager compartilhado - use transações Spring ou EJBCMT em vez disso

Eu então tentei um método que a maioria dos sites diz ser para usar gerenciadores de entidade gerenciados por aplicativo e não gerenciados por contêiner (o que acredito que o Spring seja) e isso foi joinTransaction() .

Ter @Transactional decorando o método e chamando joinTransaction() no objeto EntityManager antes de chamar query.executeUpdate() e minha atualização de consulta nativa funcionou.

Espero que isso ajude alguém com esse problema.