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
@Vetinari W przypadku Linuxa i windowsa loguję się tym samym użytkownikiem do tej samej bazy. Commit powinien robić automatycznie spring po wyjściu z metody oznaczonej @Transactional
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
@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
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
Commit powinien robić automatycznie spring po wyjściu z metody oznaczonej @Transactional
Po profilaktycznym sprawdzeniu SELECT'em - rekord został dodany
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
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