MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

un nom de champ ClassName est inséré dans mongodb par morphia

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