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