Wpis z mikrobloga

Mam pytanie dotyczące springa i jego repozytoriów JPA.
Po wykonaniu metody save() na repozytorium nie idzie INSERT do bazy. Tak samo jest z delete() i innymi zapytaniami modyfikującymi bazę.
Co ciekawe aplikacja działa bez problemu na tomcacie na Windowsie korzystając z bazy zainstalowanej na linuxie, natomiast uruchamiając ją na Linuxowym tomcacie i podłączając do tej samej bazy nie działa.
Błędów nie ma, jedynie przy loggingu na poziomie DEBUG można zobaczyć ze hibernate wykonuje tylko SELECT'y, a INSERT'y i UPDATE'y pomija.
Nie mam pojęcia co może być nie tak. Macie jakieś pomysły?

Dodam jeszcze że na windowsie w logach można zobaczyć:
DEBUG TransactionImpl:51 - begin
DEBUG TransationImpl:62 - commiting
Co nie pokazuje się na linuxie.
#programowanie #hibernate #spring #java #jpa
  • 13
  • Odpowiedz
Zamiast wykonywać metodę save(), próbuję wykonać saveAndFlush(). Dostaję wtedy Exception:
javax.persistence.TransactionRequiredException: no transaction is in progress
Co ciekawe uruchamiając ten sam kod na windowsie tego błędu nie dostaję.
Oczywiście metodę mam oznaczoną adnotacją @Transactional
  • Odpowiedz
@Vetinari: Próbówałem zrobić tak jak jest napisane na stackoverflow, lecz bezskutecznie - nadal dostaję ten sam bład. Zgaduje że kcheng ze stackoverflow miał context:component-scan zdefiniowany w innym kontekście niż tx:annotation-driven

Jeżeli chodzi o mój kod, to testuję to na bardzo prostej metodzie, która właściwie tylko wrappuje metode z repozytorium

@Transactional
@Override
public void savePost(Post post) {
this.postRepository.saveAndFlush(post);
}

metoda ta jest wykonywana przez controller
  • Odpowiedz