Du kan udtrykkeligt deaktivere className
attribut:@Entity(noClassnameStored = true)
Jeg undertrykker generelt attributten, hvis der er en enkelt enhedsklasse. Hvis jeg underklasser min enhed, aktiverer jeg den eksplicit (hvilket er standard, men bare for at være sikker).
Hvis jeg ikke tager fejl, er Morphia klog nok til at gætte den korrekte underklasse baseret på egenskaberne, selvom der ikke er nogen className
(baseret på refleksion). Så hvis du har en attribut mongoKnowledge i din underklasse Udvikler af Person og din underklasse Manager ikke har det, vil Morphia vide, at dokumenter med mongoKnowledge skal være af klassen Udvikler . Så strengt taget className
er kun påkrævet, hvis dine underklasser har de samme attributter; jeg ville dog ikke stole for meget på det.
Jeg har ikke prøvet at omdøbe enhedsklasserne, men det vil sandsynligvis give problemer. Der er et langvarigt problem med at give en @Polimorphic
anmærkning og at rette den sammen med det. Se https://code.google.com/p/morphia/issues/detail?id=22