È possibile disattivare in modo esplicito l'attributo className
: @Entity(noClassnameStored = true)
sto generalmente sopprimere l'attributo, se v'è una sola classe di entità. Se sto sottoclassi la mia entità, la sto abilitando esplicitamente (che è l'impostazione predefinita, ma per sicurezza).
Se non sbaglio, Morphia è abbastanza intelligente da indovinare la sottoclasse corretta in base alle proprietà anche se non è presente className
(basato sulla riflessione). Quindi, se avete un attributo mongoKnowledge nella sottoclasse Developer di persona e la sottoclasse manager non ce l'ha, Morphia saprà che i documenti con mongoKnowledge devono essere di classe Developer. Quindi, strettamente parlando, className
è richiesto solo se le 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 lunga data per fornire un'annotazione @Polimorphic
e per risolvere il problema insieme a questo. Vedi https://code.google.com/p/morphia/issues/detail?id=22
cosa succede se in seguito cambio il nome della classe ?? il refactoring dei nomi avviene abbastanza spesso, devo passare attraverso tutti i record e aggiornarli tutti? – nightograph
Sì, devi – Faliorn