Możesz jawnie wyłączyć className
atrybut:@Entity(noClassnameStored = true)
Generalnie tłumię atrybut, jeśli istnieje jedna klasa encji. Jeśli tworzę podklasę mojej encji, wyraźnie ją włączam (co jest domyślne, ale dla pewności).
Jeśli się nie mylę, Morphia jest wystarczająco sprytna, aby odgadnąć poprawną podklasę na podstawie właściwości, nawet jeśli nie ma className
(na podstawie refleksji). Więc jeśli masz atrybut mongoKnowledge w Twojej podklasie Programista osoby i twoja podklasa menedżer go nie ma, Morphia będzie wiedziała, że dokumenty zawierające mongoKnowledge musi należeć do klasy Programista . A więc ściśle mówiąc className
jest wymagane tylko wtedy, gdy podklasy mają te same atrybuty; jednak nie polegałbym na tym zbytnio.
Nie próbowałem zmieniać nazw klas jednostek, ale prawdopodobnie spowoduje to problemy. Istnieje od dawna problem z dostarczeniem @Polimorphic
adnotację i naprawić ją razem z tym. Zobacz https://code.google.com/p/morphia/issues/detail?id=22