Hier heb ik eindelijk een oplossing voor gevonden. Waarschijnlijk niet de beste optie, maar werkt.
Wat ik deed was de converter verwijderen uit String
naar ObjectId
dat MongoTemplate
gebruikt via QueryMapper
. Op deze manier heb ik de volgende Mongo-converter gemaakt:
public class CustomMongoConverter extends MappingMongoConverter {
public CustomMongoConverter(MongoDbFactory mongoDbFactory, MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext) {
super(mongoDbFactory, mappingContext);
conversionService.addConverter(new Converter<String, ObjectId>() {
@Override
public ObjectId convert(String source) {
throw new RuntimeException();
}
});
}
}
En toen gaf ik die implementatie van de converter door aan MongoTemplate
:
<bean id="mongoConverter" class="com.abcompany.model.repositories.utils.CustomMongoConverter">
<constructor-arg ref="mongoDbFactory"/>
<constructor-arg>
<bean class="org.springframework.data.mongodb.core.mapping.MongoMappingContext"/>
</constructor-arg>
</bean>
<bean class="org.springframework.data.mongodb.core.MongoTemplate" id="mongoTemplate">
<constructor-arg ref="mongoDbFactory"/>
<constructor-arg ref="mongoConverter"/>
</bean>
Op deze manier, wanneer het probeert te converteren van String naar ObjectId, genereert het een uitzondering en doet het het niet. Houd er rekening mee dat u de converter waarschijnlijk gewoon kunt verwijderen uit conversionService
.