Estoy programando una aplicación web usando weblogic y oracle. el origen de datos se configura a través de JNDI, con un usuario de base de datos restringido que puede DML en tablas, pero no puede DDL. Como puede adivinar, ese usuario no es el propietario de esas tablas, pero se le ha otorgado acceso.JPA - EclipseLink - Cómo cambiar el esquema predeterminado
Digamos que es GUEST_USER
La aplicación utiliza JPA + EclipseLink, y tienen un montón de entidades ya definidos. No quiero escribir en cada clase de entidad el atributo para cambiar el esquema. He intentado un SessionCustomizer, con este código.
public class MyCustomizer implements SessionCustomizer{
@Override
public void customize(Session session) throws Exception {
session.executeNonSelectingSQL("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
}
}
Parece que hay algo uninitiallized, me estoy haciendo una excepción de puntero nulo, ni siquiera estoy seguro si esto es la manera de cambiar el esquema de las conexiones antes de ser utilizados. ¿Alguna muestra o idea?
Gracias de antemano por su ayuda!
+1 Esto suena bien –
esto es bueno pero aún no es dinámico, ¿qué sucede si necesito cambiar el esquema de dos versiones de la misma aplicación que apuntan a dos instancias de db diff? –
Además, si configuro el esquema para un EntityManager particular con un 'SET search_path TO ...', pasar el administrador de entidades a otros métodos no tiene efectos. Supongo que Wildfly (en mi caso) toma una de las conexiones del grupo creadas previamente con el esquema público predeterminado – Chris