Могу ли я переключаться между двумя коллекциями под одной и той же БД в приложении java spring-boot? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть код, связанный с mongodb, в моем java-приложении, и могу ли я переключаться между двумя коллекциями под одним и тем же БД в java-коде?

@JsonIgnoreProperties(ignoreUnknown = true)
@Document(collection = "collectionA")
@QueryEntity
public class RepreCase {

Я хочу иметь другую коллекцию вместо этого, скажем collectionB @Document(collection = "collectionA") и возврат к одному и тому же collectionA путем переключения между двумя коллекциями A & B под одной и той же DB

Могу ли я сделать это так?@Document(collection = "collectionA, collectionB")

Это достижимо и как?Заранее спасибо

1 Ответ

0 голосов
/ 02 июля 2019

Этот пример должен помочь

Определить свой класс сущностей как

@Document(collection = "${EventDataRepository.getCollectionName()}")
public class EventData implements Serializable {

Определить пользовательский интерфейс репозитория с методами получения и установки для "collectionName"

public interface EventDataRepositoryCustom {

    String getCollectionName();

    void setCollectionName(String collectionName);
}

Предоставьте класс реализации для пользовательского репозитория с реализацией "collectionName"

public class EventDataRepositoryImpl implements EventDataRepositoryCustom{

    private static String collectionName = "myCollection";

    @Override
    public String getCollectionName() {
        return collectionName;
    }

    @Override
    public void setCollectionName(String collectionName) {
        this.collectionName = collectionName;
    }
}

Добавьте EventDataRepositoryImpl в список расширений вашего интерфейса репозитория, в этом случае он будет выглядеть как

@Repository
public interface EventDataRepository extends MongoRepository<EventData, String>, EventDataRepositoryImpl  {
}

Теперь в вашем классе Service, где вы используете MongoRepository, установите имя коллекции, это будет выглядеть как

@Autowired
EventDataRepository  repository ;

repository.setCollectionName("collectionName");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...