Když Morphia čte vaše dokumenty z výsledků dotazu, první věc, kterou udělá, je vytvoření nové instance vaší entity, Student
. Pouze vyvolá konstruktor bez argumentů. Není v tom žádná magie. Pole města je inicializováno hodnotou. Jakmile to uděláte, Morphia vezme každý klíč v dokumentu vrácený z databáze, najde mapované pole a nastaví ho. Ve vašem případě v dokumentu není klíč města, takže toto pole Morphia nikdy nenastaví a ponechá na místě inicializovanou hodnotu.
Obecně platí, že inicializace polí na entitách, jako je tato, je špatný postup. Pro každou entitu načtenou z databáze musí JVM tato pole inicializovat na nějakou hodnotu, aby je později přepsal. V případech, jako je ten váš, kdy se některá pole ve výsledku dotazu nevrátí, tyto hodnoty zůstanou i poté, co Morphia vrátí nové instance zpět do vaší aplikace.