MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

ConversionFailedException:la persistenza di un DBObject ma il recupero restituisce un LinkedHashMap

il tuo errore è probabilmente esattamente quello che dice nella tua eccezione:a ConversionFailed Exception causato da qualcuno/qualcosa che tenta di convertire da ArrayList a una LinkedHashMap; ma non esiste un convertitore adatto per quello (ConverterNotFoundException ).

dove sta accadendo esattamente è impossibile dire poiché hai pubblicato solo pochissimo codice. non riesco a trovare la stringa "myString" nel tuo codice, ma è menzionata nell'errore.

i dati primaverili di solito utilizzano convertitori nel processo di mappatura. per avere un maggiore controllo sul processo di mappatura alcune persone preferiscono implementare e registrare un convertitore personalizzato per le proprie classi.

puoi leggere i convertitori qui

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

e qui

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

forse questo ti sarà già sufficiente per correggere tu stesso l'errore.

Modifica:un breve commento su questa riga:

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

stai eseguendo il casting su DBObject prima di chiamare il setter, perché il setter prende un DBObject. questo non va bene, dovresti creare un altro setter per JSON ed eseguire il casting lì, o finirai per eseguire quell'operazione di cast ovunque nel tuo codice; non è molto SECCO.

c'è anche qualcosa chiamato DBRefs in 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. potresti preferire questo a un DBObject incorporato.