TL;DR
Nie ma DBRef
wsparcie w reaktywnym Spring Data MongoDB i nie jestem pewien, czy będzie.
Wyjaśnienie
Projekty Spring Data są podzielone na komponenty Template API, Converter i Mapping Metadata. Niezbędna (blokowanie) implementacja interfejsu API szablonów wykorzystuje imperatywne podejście do pobierania Document
si przekonwertować je na obiekty domeny. MappingMongoConverter
w szczególności obsługuje wszystkie konwersje i DBRef
rezolucja. Ten interfejs API działa w synchronicznym/imperatywnym interfejsie API i jest używany do obu implementacji interfejsu API szablonów (imperatywnej i reaktywnej).
Ponowne użycie MappingMongoConverter
była logiczną decyzją podczas dodawania wsparcia reaktywnego, ponieważ nie musimy duplikować kodu. Jedynym ograniczeniem jest DBRef
rozdzielczość, która nie pasuje do reaktywnego modelu wykonania.
Aby wspierać reaktywne DBRef
s, konwerter musi zostać podzielony na kilka bitów, a cała obsługa asocjacji wymaga remontu.
Odniesienie :https://jira.spring.io/browse/DATAMONGO-2146
Rekomendacja
Zachowaj odwołania jako klucze/identyfikatory w modelu domeny i wyszukaj je w razie potrzeby. zipWith
i flatMap
są odpowiednimi operatorami, w zależności od tego, co chcesz zarchiwizować (ulepszyć model o odniesienia, tylko odnośniki wyszukiwania).
W związku z tym:Reactive Spring Data MongoDB zawiera częściowo zredukowany zestaw funkcji. Kontekstowe rozszerzenie SpEL to funkcja, która nie jest obsługiwana, ponieważ te komponenty zakładają imperatywny model programowania, a tym samym wykonanie synchroniczne.