MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

un nome di campo ClassName viene inserito in mongodb da morphia

Puoi disabilitare in modo esplicito il className attributo:@Entity(noClassnameStored = true)

In genere sto sopprimendo l'attributo, se esiste una singola classe di entità. Se sto sottoclasse la mia entità, la sto abilitando esplicitamente (che è l'impostazione predefinita, ma solo per essere sicuro).

Se non sbaglio, Morphia è abbastanza intelligente da indovinare la sottoclasse corretta in base alle proprietà anche se non c'è className (basato sulla riflessione). Quindi, se hai un attributo mongoKnowledge nella tua sottoclasse Sviluppatore di Persona e la tua sottoclasse Manager non ce l'ha, Morphia saprà che i documenti con mongoKnowledge deve essere della classe Sviluppatore . Quindi, a rigor di termini, className è richiesto solo se le tue sottoclassi hanno gli stessi attributi; tuttavia, non ci farei troppo affidamento.

Non ho provato a rinominare le classi di entità, ma probabilmente causerà problemi. C'è un problema di vecchia data per fornire un @Polimorphic annotazione e per correggerlo insieme a quello. Vedi https://code.google.com/p/morphia/issues/detail?id=22