私はついにこれに対する解決策を見つけました。おそらく最良の選択肢ではありませんが、機能します。
私がしたことは、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
からコンバーターを削除できることに注意してください 。