sql >> Databáze >  >> NoSQL >> MongoDB

Multi nájem založený na kolekcích v jarním datovém mongu

Můžete rozšířit MappingMongoEntityInformation tak, aby přepsala getCollectionName(). Operace úložiště volají getCollectionName() při každé operaci. Předpokládám, že tenantId bude ThreadLocal

public class TenantThreadLocal extends ThreadLocal<String> {
    private final static TenantThreadLocal instance = new TenantThreadLocal();

    public static TenantThreadLocal instance() {
        return instance;
    }
}

A přepsaná třída s vynechanými konstruktory.

public class TenantMappingMongoEntityInformation<T, ID extends java.io.Serializable>  extends MappingMongoEntityInformation<T, ID> {

    @Override
    public String getCollectionName() {
        return TenantThreadLocal.instance().get() + super.getCollectionName();
    }
}

Poté vytvořte své úložiště:

MongoPersistentEntity<YourObject> persistentEntity = 
    (MongoPersistentEntity<YourObject>) 
    mongoOperations.getConverter()
    .getMappingContext()
    .getPersistentEntity(YourObject.class);

MongoEntityInformation<YourObject, ObjectId> mongoEntityInformation =
    new MappingMongoEntityInformation<YourObject, ObjectId>(persistentEntity);

CrudRepository<YourObject, ObjectId> repository =
    new SimpleMongoRepository<YourObject, ObjectId>(mongoEntityInformation, mongoOperations);



  1. Jak zkontrolovat $setDifference ve dvou polích pomocí mongo-query

  2. Jak změním databázi redis?

  3. Aktualizujte dílčí dokument v Mongodb, který ukládá ID

  4. Transparentní zálohování databáze pro vaše aplikace