TL;DR
Няма DBRef
поддръжка в реактивни Spring Data MongoDB и не съм сигурен, че ще има.
Обяснение
Проектите Spring Data са организирани в Template API, компоненти Converter и Mapping Metadata. Императивното (блокиращо) внедряване на Template API използва императивен подход за извличане на Document
s и ги преобразувайте в обекти на домейн. MappingMongoConverter
по-специално обработва цялото преобразуване и DBRef
резолюция. Този API работи в синхронен/императивен API и се използва и за двете реализации на Template API (императивен и реактивен).
Повторно използване на MappingMongoConverter
беше логичното решение при добавяне на реактивна поддръжка, тъй като не е необходимо да дублираме код. Единственото ограничение е DBRef
резолюция, която не отговаря на модела на реактивно изпълнение.
За поддръжка на реактивен DBRef
s, конверторът трябва да бъде разделен на няколко бита и цялата обработка на асоциирането изисква основен ремонт.
Справка:https://jira.spring.io/browse/DATAMONGO-2146
Препоръка
Съхранявайте препратките като ключове/идентификационни номера във вашия модел на домейн и ги търсете, ако е необходимо. zipWith
и flatMap
са подходящите оператори, в зависимост от това какво искате да архивирате (подобрете модела с препратки, само препратки за търсене).
По свързана бележка:Reactive Spring Data MongoDB идва частично с намален набор от функции. Контекстното разширение на SpEL е функция, която не се поддържа, тъй като тези компоненти предполагат императивен модел на програмиране и следователно синхронно изпълнение.