मुझे आखिरकार इसका हल मिल गया। शायद सबसे अच्छा विकल्प नहीं है, लेकिन काम करता है।
मैंने जो किया वह कनवर्टर को String
. से हटा दिया गया था करने के लिए ObjectId
वह MongoTemplate
QueryMapper
. के माध्यम से उपयोग करता है . इस तरह, मैंने निम्नलिखित मोंगो कनवर्टर बनाया:
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>
इस तरह, स्ट्रिंग से ऑब्जेक्ट आईडी में कनवर्ट करने का प्रयास करते समय, यह अपवाद फेंकता है और यह ऐसा नहीं करता है। कृपया ध्यान दें कि आप शायद कन्वर्टर को conversionService
. से हटा सकते हैं ।