Du kan uttryckligen inaktivera className
attribut:@Entity(noClassnameStored = true)
Jag undertrycker i allmänhet attributet om det finns en enda enhetsklass. Om jag underklassar min entitet, aktiverar jag den explicit (vilket är standard, men bara för att vara säker).
Om jag inte har fel så är Morphia smart nog att gissa rätt underklass baserat på egenskaperna även om det inte finns någon className
(baserat på reflektion). Så om du har ett attribut mongoKnowledge i din underklass Utvecklare av Person och din underklass Manager inte har det, kommer Morphia att veta att dokument med mongoKnowledge måste vara av klassen Utvecklare . Så strängt taget className
krävs bara om dina underklasser har samma attribut; men jag skulle inte lita på det för mycket.
Jag har inte försökt byta namn på entitetsklasserna, men det kommer förmodligen att orsaka problem. Det finns ett långvarigt problem att tillhandahålla en @Polimorphic
anteckning och att fixa det tillsammans med det. Se https://code.google.com/p/morphia/issues/detail?id=22