Ich programmiere eine Webanwendung mit Weblogic und Oracle. Die Datenquelle wird über JNDI konfiguriert, mit einem eingeschränkten Datenbankbenutzer, der DML in Tabellen schreiben kann, aber nicht DDL. Wie Sie sich denken können, ist dieser Benutzer nicht der Besitzer dieser Tabellen, aber er hat Zugriff gewährt.JPA - EclipseLink - Wie Standardschema zu ändern
Lassen Sie uns sagen, dass er GUEST_USER ist
Die Anwendung PPV + Eclipse verwendet, und haben viele Einheiten bereits definiert. Ich möchte nicht in jeder einzelnen Entitätsklasse das Attribut schreiben, um das Schema zu ändern. Ich habe einen SessionCustomizer mit diesem Code versucht.
public class MyCustomizer implements SessionCustomizer{
@Override
public void customize(Session session) throws Exception {
session.executeNonSelectingSQL("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
}
}
Es scheint, dass etwas uninitiallized es gibt, ich bin eine Null-Zeiger-Ausnahme bekommen, ich bin nicht einmal sicher, ob dies der richtige Weg ist das Schema für die Verbindungen zu ändern, bevor sie verwendet werden. Irgendwelche Proben oder Ideen?
Vielen Dank im Voraus für Ihre Hilfe!
+1 Das klingt gut –
das ist gut, aber immer noch nicht dynamisch, was ist, wenn ich das Schema für zwei Versionen der gleichen App für zwei Diff-db-Instanzen geändert brauchen? –
Wenn ich außerdem das Schema für einen bestimmten EntityManager mit einem 'SET search_path TO ... 'festlege, hat die Übergabe des Entity Managers an andere Methoden keine Auswirkungen. Ich nehme an, dass Wildfly (in meinem Fall) eine der Poolverbindungen verwendet, die zuvor mit dem öffentlichen Standardschema erstellt wurden. – Chris