TL;DR
Det finns ingen DBRef
stöd i reaktiv Spring Data MongoDB och jag är inte säker på att det kommer att finnas.
Förklaring
Spring Data-projekt är organiserade i Template API, Converter och Mapping Metadata-komponenter. Den imperativa (blockerande) implementeringen av Template API använder en imperativ metod för att hämta Document
s och konvertera dessa till domänobjekt. MappingMongoConverter
hanterar särskilt all konvertering och DBRef
upplösning. Detta API fungerar i ett synkront/imperativt API och används för både Template API-implementeringar (imperativt och det reaktiva).
Återanvändning av MappingMongoConverter
var det logiska beslutet när vi lade till reaktivt stöd eftersom vi inte behöver duplicera kod. Den enda begränsningen är DBRef
upplösning som inte passar den reaktiva exekveringsmodellen.
För att stödja reaktiv DBRef
s måste omvandlaren delas upp i flera bitar och hela associationshanteringen kräver en översyn.
Referens :https://jira.spring.io/browse/DATAMONGO-2146
Rekommendation
Behåll referenser som nycklar/ID:n i din domänmodell och slå upp dessa efter behov. zipWith
och flatMap
är lämpliga operatorer, beroende på vad du vill arkivera (förbättra modellen med referenser, endast uppslagsreferenser).
På en relaterad notering:Reactive Spring Data MongoDB kommer delvis med en reducerad funktionsuppsättning. Kontextuell SpEL-förlängning är en funktion som inte stöds eftersom dessa komponenter förutsätter en imperativ programmeringsmodell och därmed synkron exekvering.