Най-накрая намерих решение за това. Вероятно не е най-добрият вариант, но работи.
Това, което направих, беше да премахна конвертора от String
към ObjectId
че MongoTemplate
използва чрез QueryMapper
. По този начин създадох следния Mongo конвертор:
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();
}
});
}
}
И след това предадох тази реализация на конвертора на 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>
По този начин, когато се опитва да конвертира от String в ObjectId, той хвърля изключение и не го прави. Моля, обърнете внимание, че вероятно можете просто да премахнете конвертора от conversionService
.