Ho cercato di registrare i miei convertitori personalizzati di scrittura per modificare il valore ID predefinito. Ma in realtà non chiama mai. Qui è la mia ordinazione ConverterSpring not using mongo custom converters
public class EventKeyConverter implements Converter<Event,DBObject> {
@Override
public DBObject convert(Event object) {
DBObject dbObject = DBObjectTransformer.toDBObject(object);
dbObject.put("_id", KeyGenerator.getRandomKey());
return dbObject;
}
}
qui è il posto che si è registrato convertitore cliente
@Override
@Bean
public CustomConversions customConversions() {
List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
converters.add(new EventKeyConverter());
return new CustomConversions(converters);
}
@Override
@Bean
public MappingMongoConverter mappingMongoConverter() throws Exception {
MappingMongoConverter converter = new MappingMongoConverter(
eventsMongoDbFactory(), mongoMappingContext());
converter.setCustomConversions(customConversions());
return converter;
}
public @Bean
MongoTemplate eventsMongoTemplate() throws Exception {
final MongoTemplate template = new MongoTemplate(
eventsMongoDbFactory(), mappingMongoConverter());
template.setWriteResultChecking(WriteResultChecking.EXCEPTION);
return template;
}
Quando sto risparmiando alcuni oggetti di questo convertitore non viene mai chiamato.
Edit 1: ho bisogno di cambiare l'oggetto predefinito Id in qualche Id personalizzato (UUID + chiave casuale) in tutti i repository. Questo è il motivo per cui ho provato ad usare il convertitore mongo.
Modifica 2: Appena trovato il problema. Cambia @Configuration in @Component nella classe che contiene customConversion() e funziona correttamente. Ma ti stai ancora chiedendo cosa è successo qui?
Potresti mostrare come effettivamente salvi gli oggetti? Voglio dire, perché dovresti convertire un POJO in BSON effettivo per salvarlo in DB? – user
Devo cambiare l'ID oggetto predefinito in qualche ID personalizzato (UUID + chiave casuale) in tutti i repository. Questo è il motivo per cui ho provato ad usare il convertitore mongo. –
Rajith, in mongodb non sei autorizzato ad aggiornare i campi _id. Se desideri aggiungere nuovi oggetti con un _id personalizzato, devi fornire il campo necessario con l'annotazione @Id e quando inserisci un oggetto imposta manualmente _id. – user