/ / Aktualizacja Hibernacji z kluczem obcym relacji - java, hibernacja, jpa

Aktualizacja hibernacji z kluczem obcym relacji - java, hibernate, jpa

Próbuję utrwalić byt A, który ma odniesienie do obiektu B, za pomocą Hibernacji za pośrednictwem JPA.

Moim zdaniem stworzyłem formularz, który zawiera combobox wypełniony wpisami B. Kiedy przetwarzam dane wejściowe użytkownika, tworzę nowe DTO dla elementu A i przypisuję B DTO jako powiązaną jednostkę.

Następnie wysyłam ten obiekt do mojej warstwy usług i tam wzywam mojego dao, aby utrwalił moją jednostkę A:

dao.persist(A);

Ale otrzymuję następujący wyjątek:

Error org.hibernate.TransientPropertyValueException: object references an unsaved transient instance

Jeśli dodam adnotację do mojej Jednostki cascade=CascadeType.ALL, a następnie dostaję nowy byt B wstawiony do bazy danych.

Jak mogę to zrobić, aby mój byt A był tylko utrwalonyprzez klucz obcy dla B? Oznacza to, że tylko klucz obcy jest wstawiany do bazy danych (ponieważ B jest tabelą główną, nie potrzebuję elementów do wstawienia).

Odpowiedzi:

0 dla odpowiedzi № 1

Musisz ustawić obie strony relacji, aby kaskadowanie było obsługiwane poprawnie w relacji dwukierunkowej.

tj. dla onetotonu:

a.setB(b);
b.setA(b);

jeden za dużo:

a.setB(b);
b.getAs().add(a);

Zobacz tutaj, jak powinieneś zamknąć te operacje:

https://stackoverflow.com/a/23648953/1356423