Jeg fandt endelig en løsning på dette. Sandsynligvis ikke den bedste løsning, men virker.
Det, jeg gjorde, var at fjerne konverteren fra String
til ObjectId
den MongoTemplate
bruger gennem QueryMapper
. På denne måde oprettede jeg følgende Mongo-konverter:
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();
}
});
}
}
Og så overførte jeg implementeringen af konverteren til 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>
På denne måde, når du forsøger at konvertere fra String til ObjectId, kaster det en undtagelse, og det gør det ikke. Bemærk venligst, at du sandsynligvis bare kan fjerne konverteren fra conversionService
.