Как внедрить репозиторий JPA для нескольких источников данных в микронавтом-данных? - PullRequest
0 голосов
/ 14 января 2020

У меня есть приложение для данных о микронавтах, и для операции копирования мне нужно использовать один и тот же репозиторий JPA для доступа к нескольким источникам данных. Я хотел бы ввести их в другую переменную, например, sourceRepo и targetRepo. Источники данных объявляются в application.yml с именами по умолчанию и target . Если я объявлю переменную репозитория с @Inject, она будет инициализирована для доступа к источнику данных default .

Вопрос в том, как объявить внедренную переменную репозитория, чтобы она обращалась к источнику данных target ? Я могу объявить target инъекции EntityManager или SynchronousTransactionManager, как показано ниже, и они работают. Но ни одна из этих аннотаций не влияет на переменную или параметр репозитория.

    @Inject
    @CurrentSession("target")
    EntityManager entityManager;

    @PersistenceContext(name = "target")
    SynchronousTransactionManager<Connection> transactionManager;    

1 Ответ

0 голосов
/ 22 января 2020

Чтобы ответить на мой собственный вопрос: в настоящее время (по состоянию на micronaut-data 1.0.0.RC1) внедрение репозиториев напрямую для разных источников данных невозможно. Вместо этого, аннотация @Repository может принимать имя источника данных (например, @Repository("target"). Это означает, что для использования репозитория в разных репозиториях его необходимо объявить в определенном классе c. Чтобы использовать такой репозиторий, экземпляр соответствующий класс должен быть введен в код использования.

Изменение этого было предложено в проекте данных о микронавтом и находится на рассмотрении.

...