J'ai finalement trouvé une solution pour cela. Probablement pas la meilleure option, mais fonctionne.
Ce que j'ai fait, c'est supprimer le convertisseur de String
à ObjectId
que MongoTemplate
utilise via QueryMapper
. De cette façon, j'ai créé le convertisseur Mongo suivant :
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();
}
});
}
}
Et puis, j'ai passé cette implémentation du convertisseur à 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>
De cette façon, lors de la tentative de conversion de String en ObjectId, il lève une exception et ne le fait pas. Veuillez noter que vous pouvez probablement simplement supprimer le convertisseur de conversionService
.