MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

um nome de campo ClassName está sendo inserido no mongodb por morphia


Você pode desabilitar explicitamente o className atributo:@Entity(noClassnameStored = true)

Geralmente estou suprimindo o atributo, se houver uma única classe de entidade. Se estou subclassificando minha entidade, estou habilitando-a explicitamente (que é o padrão, mas só para ter certeza).

Se não estou enganado, Morphia é inteligente o suficiente para adivinhar a subclasse correta com base nas propriedades, mesmo que não haja className (baseado na reflexão). Então, se você tiver um atributo mongoKnowledge em sua subclasse Desenvolvedor de Pessoa e sua subclasse Gerente não tiver, o Morphia saberá que documentos com mongoKnowledge deve ser da classe Desenvolvedor . Então estritamente falando className só é necessário se suas subclasses tiverem os mesmos atributos; no entanto, eu não confiaria muito nisso.

Eu não tentei renomear as classes de entidade, mas provavelmente causará problemas. Há um problema antigo para fornecer um @Polimorphic anotação e corrigi-lo junto com isso. Consulte https://code.google.com/p/morphia/issues/detail?id=22