MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Предотвратете Spring Data за Mongo да преобразува идентификатори в ObjectId

Най-накрая намерих решение за това. Вероятно не е най-добрият вариант, но работи.

Това, което направих, беше да премахна конвертора от 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 .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Съхранявайте свързани ключове като OID или низове в MongoDB

  2. Spring MongoItemReader не чете всички записи при еднократно изпълнение

  3. MongoDB, премахнете обекта от масива

  4. Mongoose/NextJS - Моделът не е дефиниран / Не може да презапише модела, след като бъде компилиран

  5. свързване на mongodb, създаден в mongolab чрез java приложение