Utrwalanie danych w bazie: javax.ejb.EJBTransactionRolledbackException [JSF, JPA]

0

Moim celem jest stworzenie możliwości dodania nowego usera (jedna tabela, główna gdzie dochodzą wszystkie dowiązania):

Ugrzęzłem. Aplikacja nie utrwala ani nie wyświetla danych z bazy, a nawet je usuwa przy próbie zapisu nowych. Zaprogramowany przycisk "Potwierdź" (odnoście wprowadzonych danych do formularza daje: javax.ejb.EJBTransactionRolledbackException

Podaje stacktrace wywołany po próbie zapisania na trwałe danych w bazie.
Mój program ma strukturę DAO.

Poproszę o wskazówki.

1

Caused by: javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'. Please refer to embedded ConstraintViolations for details.

Zerknij do ConstraintViolations. Na pewno masz wypełnione wszystkie wymagane pola?

0

Masz wyraźnie napisane:
javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'

W skrócie: bean nie przeszedł walidacji. Dlaczego? Trudno napisać, w stacku tego nie ma. Szybkie google i:
http://stackoverflow.com/questions/12823000/bean-validation-constraints-violated-while-executing-automatic-bean-validation

  1. Wygląda na to, że zdarzają się różne kwiatki - jak to z kolejnością annotacji (!)
  2. Wychodzi też na to, że dobrym pomysłem jest dopisanie własnego create/persista itp., który zwróci Ci listę komunikatów walidacji.
0

Caused by: javax.faces.FacesException: #{confirmPageBean.addUser()}:
...
Warning: A system exception occurred during an invocation on EJB UsersEndpoint, method: public void app.endpoint.UsersEndpoint.addUser(app.model.entity.Users)

Zapinamy debuger w tej metodzie i patrzymy co to za wyjatek.

0

Przydał się @GeneratedValue(strategy = GenerationType.AUTO), brakowało id (logicznie nic go nie generowało). Ciekawe że w tworzonych z automatu encjach tego nie było. :) Zaczęło coś dodawać ale nadal nie wiem czy to wszystko dobrze zrobione jest.

0

Generalnie dane nadal znikają z bazy, tego jeszcze nie spotkałem :P Tym razem po "dodaniu" nie generuje stacktrace'a nawet

0

Zwykle "znikanie z bazy" wynika z tego, że ktoś używa obiektów encyjnych do logiki biznesowej przy otwartej sesji z bazą danych. Jeśli np. wyciągnę sobie z bazy obiekt X który ma kolekcje obiektów Y i potem będę sobie z tej listy coś wyrzucał, bo do widoku potrzebne mi tylko niektóre rekordy, to jeśli sesja jest aktywna te obiekty Y zostaną usunięte także z bazy...

0

Dane zostają utracone przy każdym kolejnym odpaleniu aplikacji, trudno mi to rozwiązać. Zaprogramowane guziki "edytuj" i "usuń" wyświetlają mi NullPointerException gdy obiekt w bazie teoretycznie jeszcze jest, czyli chyba tak naprawdę go nie.

1

A nie ustawiłeś czasem w konfiguracji jpa create-drop? ;]

0

Dobra to rzeczywiście PU, skąd mogłem wiedzieć że ten tryb design jest zupełnie do d**y i zmian nie zatwierdza. NetBeans mnie kiedyś zamęczy.

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