sql >> Base de Datos >  >> NoSQL >> MongoDB

morphia está insertando un nombre de campo ClassName en mongodb

Puede deshabilitar explícitamente el className atributo:@Entity(noClassnameStored = true)

Generalmente estoy suprimiendo el atributo, si hay una sola clase de entidad. Si estoy subclasificando mi entidad, la habilito explícitamente (que es el valor predeterminado, pero solo para estar seguro).

Si no me equivoco, Morphia es lo suficientemente inteligente como para adivinar la subclase correcta en función de las propiedades, incluso si no hay className (basado en la reflexión). Entonces, si tiene un atributo mongoKnowledge en su subclase Desarrollador de Persona y su subclase Administrador no lo tiene, Morphia sabrá que los documentos con mongoKnowledge debe ser de la clase Desarrollador . Hablando estrictamente className solo se requiere si sus subclases tienen los mismos atributos; sin embargo, no confiaría demasiado en ello.

No he intentado cambiar el nombre de las clases de entidad, pero probablemente cause problemas. Hay un problema de larga data para proporcionar un @Polimorphic anotación y arreglarlo junto con eso. Consulte https://code.google.com/p/morphia/issues/detail?id=22