Quindi ecco la storia:aggiungiamo il tipo per impostazione predefinita come una sorta di suggerimento su quale classe istanziare effettivamente. Dato che devi inserire un tipo in cui leggere il documento tramite MongoTemplate
comunque ci sono due opzioni possibili:
- Consegni un tipo a cui può essere assegnato il tipo effettivamente memorizzato. In tal caso consideriamo il tipo memorizzato, lo utilizziamo per la creazione dell'oggetto. L'esempio classico qui sta facendo query polimorfiche. Supponiamo di avere una classe astratta
Contact
e la tuaPerson
. Puoi quindi eseguire una query perContact
se essenzialmente dobbiamo determinare un tipo di cui creare un'istanza. - Se - d'altra parte - passi in un tipo completamente diverso, faremmo semplicemente il marshalling in quel dato tipo, non in quello effettivamente memorizzato nel documento. Ciò coprirebbe la tua domanda su cosa succede se sposti il tipo.
Potresti essere interessato a guardare questo ticket che copre una sorta di strategia di mappatura del tipo collegabile per trasformare le informazioni sul tipo in un tipo reale. Questo può servire semplicemente a risparmiare spazio poiché potresti voler ridurre un nome di classe qualificato lungo a un hash di poche lettere. Consentirebbe anche scenari di migrazione più complessi in cui potresti trovare chiavi di tipo completamente arbitrarie prodotte da un altro client del datastore e associarle a tipi Java.