Я программирую веб-приложение с помощью weblogic и oracle. источник данных настроен через JNDI с ограниченным пользователем базы данных, который может использовать DML в таблицах, но не может DDL. Как вы можете догадаться, этот пользователь не является владельцем этих таблиц, но ему предоставлен доступ.JPA - EclipseLink - Как изменить схему по умолчанию
Допустим, он GUEST_USER
Приложение использует JPA + EclipseLink, и есть много организаций, которые уже определены. Я не хочу писать в каждом классе сущности атрибут для изменения схемы. Я пробовал SessionCustomizer с этим кодом.
public class MyCustomizer implements SessionCustomizer{
@Override
public void customize(Session session) throws Exception {
session.executeNonSelectingSQL("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
}
}
Кажется, что есть что-то uninitiallized, я получаю исключение нулевого указателя, я даже не уверен, если это способ изменить схему для соединений до их использования. Любые образцы или идеи?
Заранее благодарим за вашу помощь!
+1 Это звучит хорошо –
Это хорошо, но все еще не динамично, что делать, если мне нужна схема, измененная для двух версий того же приложения, указывающих на два экземпляра diff db? –
Кроме того, если я устанавливаю схему для определенного EntityManager с помощью 'SET search_path TO ...', передача диспетчера сущностей другим методам не имеет никаких эффектов. Я полагаю, что Wildfly (в моем случае) берет одно из подключений пула, ранее созданных с помощью схемы общего доступа – Chris