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

ConversionFailedException:persistir un DBObject pero recuperarlo devuelve un LinkedHashMap

su error probablemente sea exactamente lo que dice en su excepción:una ConversionFailed Exception causado por alguien/algo que intenta convertir desde ArrayList a un LinkedHashMap; pero simplemente no hay un convertidor adecuado para eso (ConverterNotFoundException ).

Es imposible decir exactamente dónde está sucediendo esto, ya que solo publicaste muy poco código. No puedo encontrar la cadena "myString" en su código, pero se menciona en el error.

Spring Data generalmente usa convertidores en su proceso de mapeo. para tener más control sobre el proceso de asignación, algunas personas prefieren implementar y registrar un convertidor personalizado para sus clases.

Puedes leer sobre convertidores aquí

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

y aquí

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

tal vez esto ya sea suficiente para que usted mismo corrija el error.

Editar:un breve comentario sobre esta línea:

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

está transmitiendo a DBObject antes de llamar al setter, porque el setter toma un DBObject. esto es malo, debe crear otro setter para JSON y hacer la conversión allí, o terminará haciendo esa operación de conversión en todas partes de su código; eso no es muy SECO.

también hay algo llamado DBRefs en Spring Data: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. es posible que prefiera esto a un DBObject incrustado.