MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Powstrzymaj Spring Data dla Mongo przed konwersją identyfikatorów na ObjectId

W końcu znalazłem na to rozwiązanie. Prawdopodobnie nie najlepsza opcja, ale działa.

Usunąłem konwerter z String do ObjectId ten MongoTemplate używa przez QueryMapper . W ten sposób stworzyłem następujący konwerter 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();
            }
        });
    }
}

A potem przekazałem tę implementację konwertera do 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>

W ten sposób podczas próby konwersji z String na ObjectId zgłasza wyjątek i tego nie robi. Pamiętaj, że prawdopodobnie możesz po prostu usunąć konwerter z usługi conversionService .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. django.core.exceptions.ImproperlyConfigured:„django_mongodb_engine” nie jest dostępnym zapleczem bazy danych

  2. Jak wykonać zapytanie NOT IN w Mongo?

  3. Jak migrować dane w MongoDB

  4. jak korzystać z agregatu mongodb i pobierać całe dokumenty

  5. Mongodb - liczba elementów przy użyciu addToSet