Vous pouvez explicitement désactiver le className
attribut :@Entity(noClassnameStored = true)
Je supprime généralement l'attribut, s'il existe une seule classe d'entité. Si je sous-classe mon entité, je l'active explicitement (ce qui est la valeur par défaut, mais juste pour être sûr).
Si je ne me trompe pas, Morphia est assez intelligent pour deviner la bonne sous-classe en fonction des propriétés même s'il n'y a pas de className
(basé sur la réflexion). Donc si vous avez un attribut mongoKnowledge dans votre sous-classe Développeur de Personne et votre sous-classe Manager ne l'a pas, Morphia saura que les documents avec mongoKnowledge doit appartenir à la classe Développeur . Donc à proprement parler className
n'est requis que si vos sous-classes ont les mêmes attributs ; cependant, je ne m'y fierais pas trop.
Je n'ai pas essayé de renommer les classes d'entités, mais cela causera probablement des problèmes. Il y a un problème de longue date pour fournir un @Polimorphic
annotation et de le fixer avec cela. Voir https://code.google.com/p/morphia/issues/detail?id=22