Spring-Data JPA: zapisz nowy obiekt odwołując się do istniejącego
Pytanie jest zasadniczo takie samo jak poniżej:
Tworzę nową jednostkę, która odwołuje się do istniejącego, odłączonego. Teraz, gdy zapisuję ten obiekt w moim repozytorium danych wiosennych, zgłaszany jest wyjątek:
org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist
jeśli spojrzymy na metodę save () w kodzie źródłowym JPA danych źródłowych, zobaczymy:
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
a jeśli spojrzymy na isNew () wAbstractEntityInformation
public boolean isNew(T entity) {
return getId(entity) == null;
}
Więc w zasadzie jeśli zapisuję () nową jednostkę(id == null)
, wiosenne dane zawsze będą się powtarzać, a zatem ten scenariusz zawsze zawiedzie.
Wydaje się, że jest to bardzo typowy przypadek użycia podczas dodawania nowych elementów do kolekcji.
Jak mogę rozwiązać ten problem?
EDYTUJ 1:
UWAGA:
Ten problem NIE jest bezpośrednio powiązany zJak zapisać nowy podmiot, który odwołuje się do istniejącego podmiotu w Wiosennym WZP?. Aby rozwinąć załóżmy, że otrzymujesz prośbę o utworzenie nowej jednostki przez http. Następnie wyodrębniasz informacje z żądania i tworzysz swój podmiot oraz istniejący odnośnik. Dlatego zawsze będą odłączone.