MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ein Feldname ClassName wird von Morphia in Mongodb eingefügt

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