Ich habe endlich eine Lösung dafür gefunden. Wahrscheinlich nicht die beste Option, aber funktioniert.
Ich habe den Konverter aus String
entfernt zu ObjectId
dieses MongoTemplate
verwendet durch QueryMapper
. Auf diese Weise habe ich den folgenden Mongo-Konverter erstellt:
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();
}
});
}
}
Und dann habe ich diese Implementierung des Konverters an MongoTemplate
übergeben :
<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>
Auf diese Weise wird beim Versuch, von String in ObjectId zu konvertieren, eine Ausnahme ausgelöst und nicht ausgeführt. Bitte beachten Sie, dass Sie den Konverter wahrscheinlich einfach aus conversionService
entfernen können .