У меня есть два репозитория 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 {}
Комментариев нет:
Отправить комментарий