Sie können den className
explizit deaktivieren Attribut:@Entity(noClassnameStored = true)
Ich unterdrücke im Allgemeinen das Attribut, wenn es eine einzelne Entitätsklasse gibt. Wenn ich meine Entität unterteile, aktiviere ich sie explizit (was die Voreinstellung ist, aber nur um sicherzugehen).
Wenn ich mich nicht irre, ist Morphia schlau genug, die richtige Unterklasse anhand der Eigenschaften zu erraten, selbst wenn es keinen className
gibt (basierend auf Reflexion). Wenn Sie also ein Attribut mongoKnowledge haben in Ihrer Unterklasse Entwickler von Person und Ihre Unterklasse Manager nicht hat, wird Morphia wissen, dass Dokumente mit mongoKnowledge muss von der Klasse Entwickler sein . Genau genommen also className
ist nur erforderlich, wenn Ihre Unterklassen dieselben Attribute haben; Allerdings würde ich mich nicht zu sehr darauf verlassen.
Ich habe nicht versucht, die Entitätsklassen umzubenennen, aber es wird wahrscheinlich Probleme verursachen. Es gibt ein seit langem bestehendes Problem, einen @Polimorphic
bereitzustellen Anmerkung und damit zusammen zu fixieren. Siehe https://code.google.com/p/morphia/issues/detail?id=22