MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

TransactionRequiredException Wykonywanie zapytania aktualizującego/usuwającego

Nie jestem pewien, czy to pomoże w Twojej sytuacji (to znaczy, czy nadal istnieje), jednak po przeszukaniu sieci w poszukiwaniu podobnego problemu.

Tworzyłem natywne zapytanie z EntityManager trwałości, aby przeprowadzić aktualizację.

Query query = entityManager.createNativeQuery(queryString);

Otrzymuję następujący błąd:

spowodowane przez:javax.persistence.TransactionRequiredException:Wykonanie zapytania o aktualizację/usunięcie

Wiele rozwiązań sugeruje dodanie @Transactional do metody. Samo zrobienie tego nie zmieniło błędu.

Niektóre rozwiązania sugerują poproszenie EntityManager o EntityTransaction byś mógł sam wywołać begin i commit. To generuje kolejny błąd:

spowodowane przez:java.lang.IllegalStateException:Niedozwolone tworzenie transakcji na współdzielonym EntityManager - zamiast tego użyj transakcji Spring lub EJBCMT

Następnie wypróbowałem metodę, o której większość witryn twierdzi, że służy do zarządzania jednostkami zarządzanymi przez aplikację, a nie do zarządzania kontenerami (co uważam za Spring) i była to joinTransaction() .

Posiadanie @Transactional dekorowanie metody, a następnie wywołanie joinTransaction() na obiekcie EntityManager tuż przed wywołaniem query.executeUpdate() i moja natywna aktualizacja zapytania zadziałała.

Mam nadzieję, że pomoże to komuś, kto ma ten problem.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zwiększyć wartość liczbową w Mongoose?

  2. mangusta rekurencyjne wypełnianie

  3. serwer zwrócił błąd na etapie uwierzytelniania SASL:Uwierzytelnianie nie powiodło się

  4. Jak zaktualizować poddokument w mongodb

  5. Jak logować zapytania wykonywane przez Spring Data MongoDB?