Я новичок в JPA и JBoss, поэтому заранее извините, если это глупый вопрос.
У меня есть приложение, работающее на JBoss с использованием EclipseLink, которое извлекает объекты из различных баз данных на основе строки JPQL. Это отлично работает, за исключением того, что одна база данных содержит несколько схем. Я хотел бы иметь возможность указать, какую схему использовать во время выполнения, и выбрать все объекты, принадлежащие этой схеме, без изменения строки JPQL.
Чтобы еще больше усложнить ситуацию, я также хотел бы присоединиться к схемам в одном запросе. В этом случае может измениться запрос JPQL или могут быть установлены параметры, определяющие схему каждой сущности.
После некоторых поисков я наткнулся на это:
JPA: как Я указываю имя таблицы, соответствующее классу во время выполнения?
У которого есть решение с использованием ASM, которое динамически изменяет аннотацию таблицы. Я пытался использовать это, чтобы изменить свойство схемы аннотации таблицы, но я не могу заставить его работать; кажется, что Eclipse Link использует другой загрузчик классов для инициализации классов сущностей, к которым я не знаю, как получить доступ, и, таким образом, изменение аннотации не имеет никакого эффекта.
Другое решение - иметь несколько файлов конфигурации xml для каждой схемы. Это кажется неэлегантным; когда я добавляю новый объект, я должен не забыть добавить его в XML-файл каждой схемы. Я также не знаю, как я могу сделать это соединение по нескольким схемам.
Есть ли способ решить эту проблему? Я что-то упустил или это толкает JPA за пределы того, для чего он был предназначен?