JPA+ MySQL

0

Witam,

mam taki problem podczas pracy aplikacji, jak aktualizuje w bazie danych dane, to się aktualizują za pomocą merge(), jak sprawdzam w czasie jej trwania to rekord jest zmieniony. Jak zamknę aplikację to zmiana znika i zostaje stara wersja. Przy dodawania i usuwaniu rekordów nie mam takich problemów wszystko działa ok, a aktualizacja działa tylko w czasie trwania aplikacji a później znika.

0

Ma ktoś jakiś pomysł co może być nie tak?

0

commit ?

0

właśnie oto chodzi że jest tam commit.
funkcja wyglada tak
...
em.getTransaction().begin();
em.merge(encja);
em.getTransaction().commit();
em.close();

no i aktulizacja w czasie trwania programu jest widoczna na innych formatkach, ale po zamknięciu apy wprowadzona zmiana w encji znika w bazie i powraca do dawnej wersji.

0

czy przypadkiem nie otworzyłeś dwóch transakcji? Wygląda tak ze ta pierwsza zostaje zamknieta bez komita.

0

Dwa pytania:

  1. samodzielnie zarządzasz transakcjami?
  2. czy masz jeden EM na aplikację czy wiele?
0

Cześć mam wiele EntityManagerów na aplikacje. Teraz będę próbował coś zmieniać wg porad, jak macie jakiś więcej pomysłów piszcie.

0

Tryb : RESOURCE_LOCAL , tworze em przez entitymanagerfactory.

0

Czyli pewnie cache się nie odświeżył i przy kończeniu pracy poszła stara wersja encji z innego EM. Na początek włącz logowanie zapytań SQL i zobacz co się dzieje gdy kończysz pracę aplikacji.

0

Dzięki znalazłem, miałeś rację, stara wersja nie była aktulizowana podczas zamykania aplikacji, a reszta encji była aktulizowana. Dzięki za podpowiedź. I efektem tego przy mergowaniu na końcu było to, że powracała do starej wersji. Jaki byłem ślepy że tego nie zauważyłem.

To tak przy okazji napisze jakby ktoś czegoś podobnego szukał :
Jak dajecie cascade = CascadeType.ALL , to uważajcie bo się nie tylko zaktualizuje encja, którą chcecie ale także encje zależne. Może nie jest odkrywcze ale teoria teoria a w praktyce trzeba uważać na to :).

0

Dlatego warto dostęp do bazy danych realizować za pośrednictwem obiektu DAO, który będzie singletonem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1