Je suis en train de programmer une application web en utilisant weblogic et oracle. La source de données est configurée via JNDI, avec un utilisateur de base de données restreint qui peut utiliser DML dans des tables, mais ne peut pas DDL. Comme vous pouvez le deviner, cet utilisateur n'est pas le propriétaire de ces tables, mais il a accès.JPA - EclipseLink - Comment changer le schéma par défaut
Disons qu'il est GUEST_USER
L'application utilise JPA + EclipseLink, et ont beaucoup d'entités déjà définies. Je ne veux pas écrire dans chaque classe d'entité l'attribut pour changer de schéma. J'ai essayé un SessionCustomizer, avec ce code.
public class MyCustomizer implements SessionCustomizer{
@Override
public void customize(Session session) throws Exception {
session.executeNonSelectingSQL("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
}
}
Il semble qu'il y ait quelque chose uninitiallized, je reçois une exception de pointeur nul, je ne suis même pas sûr que ce soit la façon de modifier le schéma des connexions avant leur utilisation. Des échantillons ou des idées?
Merci d'avance pour votre aide!
+1 Cela semble bien –
c'est bon mais toujours pas dynamique, et si j'ai besoin de changer le schéma pour deux versions de la même application pointant vers deux instances de diff db? –
De plus, si je mets le schéma pour un EntityManager particulier avec un 'SET search_path TO ...', le passage du gestionnaire d'entités à d'autres méthodes n'a aucun effet. Je suppose que Wildfly (dans mon cas) prend l'une des connexions du pool précédemment créées avec le schéma par défaut public – Chris