GOOGLE ADS

суббота, 7 мая 2022 г.

Как использовать несколько репозиториев JPA, которые используют разные базы данных?

У меня есть два репозитория JPA. Один репозиторий содержит запросы Postgres, а другой — запросы Oracle. Они используют одно и то же объявление функции, только содержимое @Query(...) отличается (специфично для базы данных). Например, в одних средах используется Oracle DB, а в других — Postgres.

Структура:

public interface OracleQuery extends JpaRepository<T, ID> {
@Query("oracle query....")
User getData();
}
public interface PostgresQuery extends JpaRepository<T, ID> {
@Query("postgres query....")
User getData();
}

Теперь,

@Autowired
OracleQuery oracle;
@Autowired
PostgresQuery postgres;

Вместо этого у меня вопрос: возможно ли создать универсальный тип, который во время выполнения будет решать, какой репозиторий просматривать на основе конфигурации или предоставленного профиля?

Что-то вроде,

@Autowired
GenericType<?> oracle_postgres; // Based on the profile/ application configs, figures out which Repository to look into

Вопрос может показаться глупым, но возможно ли это? Поскольку я новичок в программировании на Java и Spring Framework, я начинаю понимать темы.


Решение проблемы

попробуйте использовать разные профили spring для ваших envs. Затем вы можете использовать @Profileаннотацию, например, например

@Component
@Profile("a &!b")
public class UsedInProfileAAndNotProfileB {}

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...