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

ConversionFailedException:Persistindo um DBObject, mas recuperando retorna um LinkedHashMap


seu erro provavelmente é exatamente o que diz em sua exceção:uma ConversionFailed Exception causado por alguém/algo tentando converter de ArrayList para um LinkedHashMap; mas não há conversor adequado para isso (ConverterNotFoundException ).

onde exatamente isso está acontecendo é impossível dizer, pois você postou apenas muito pouco código. não consigo encontrar a String "myString" no seu código, mas ela é mencionada no erro.

spring data geralmente usa conversores em seu processo de mapeamento. para ter mais controle sobre o processo de mapeamento, algumas pessoas preferem implementar e registrar um conversor personalizado para suas classes.

você pode ler sobre conversores aqui

http://docs.spring.io/spring-data/data-mongo/docs/current/reference/html/mongo.core.html#mongo.custom-converters

e aqui

http://docs .spring.io/spring/docs/current/spring-framework-reference/html/validation.html#core-convert

talvez isso já seja suficiente para você corrigir o erro sozinho.

Edit:um pequeno comentário sobre esta linha:

potentialCandidatesObj.setPotentialcandidates((DBObject)JSON.parse(valStr));

você está lançando para DBObject antes de chamar o setter, porque o setter recebe um DBObject. isso é ruim, você deve criar outro setter para JSON e fazer a conversão lá, ou você acabará fazendo essa operação de conversão em todo o seu código; isso não é muito SECO.

há também algo chamado DBRefs em dados de primavera:The mapping framework doesn't have to store child objects embedded within the document. You can also store them separately and use a DBRef to refer to that document. When the object is loaded from MongoDB, those references will be eagerly resolved and you will get back a mapped object that looks the same as if it had been stored embedded within your master document. você pode preferir isso em vez de um DBObject incorporado.