Dus hier is het verhaal:we voegen het type standaard toe als een soort hint welke klasse we eigenlijk moeten instantiëren. Omdat je een type moet invoeren om het document in te lezen via MongoTemplate
hoe dan ook zijn er twee mogelijke opties:
- Je levert een type in waaraan het daadwerkelijk opgeslagen type kan worden toegewezen. In dat geval beschouwen we het opgeslagen type, gebruik dat voor het maken van objecten. Klassiek voorbeeld hier is het doen van polymorfe zoekopdrachten. Stel je hebt een abstracte klasse
Contact
en uwPerson
. Je zou dan kunnen zoeken naarContact
s en we moeten in wezen moeten bepaal een type om te instantiëren. - Als je - aan de andere kant - een heel ander type doorgeeft, gaan we gewoon naar dat gegeven type, niet naar het type dat feitelijk in het document is opgeslagen. Dat zou uw vraag beantwoorden wat er gebeurt als u het type verplaatst.
Misschien ben je geïnteresseerd in het bekijken van dit ticket, dat een soort pluggable type mapping-strategie dekt om de type-informatie om te zetten in een echt type. Dit kan eenvoudig ruimtebesparende doeleinden dienen, omdat u misschien een lange gekwalificeerde klassenaam wilt reduceren tot een hash van een paar letters. Het zou ook complexere migratiescenario's mogelijk maken, waarbij u sleutels van volledig willekeurig type kunt vinden die door een andere datastore-client zijn geproduceerd en deze aan Java-types kunnen binden.