Tôi đang lập trình một ứng dụng web bằng cách sử dụng weblogic và oracle. nguồn dữ liệu được định cấu hình thông qua JNDI, với người dùng cơ sở dữ liệu bị hạn chế có thể DML vào bảng, nhưng không thể DDL. Như bạn có thể đoán, người dùng đó không phải là chủ sở hữu của những bảng đó, nhưng anh ấy được cấp quyền truy cập.JPA - EclipseLink - Cách thay đổi lược đồ mặc định
Giả sử anh ấy là GUEST_USER
Ứng dụng đang sử dụng JPA + EclipseLink và có nhiều thực thể đã được xác định. Tôi không muốn viết trong mỗi một lớp thực thể thuộc tính để thay đổi lược đồ. Tôi đã thử một SessionCustomizer, với mã này.
public class MyCustomizer implements SessionCustomizer{
@Override
public void customize(Session session) throws Exception {
session.executeNonSelectingSQL("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
}
}
Dường như có điều gì đó không được khởi động, tôi nhận được ngoại lệ con trỏ null, tôi thậm chí không chắc chắn đây có phải là cách thay đổi lược đồ cho các kết nối trước khi chúng được sử dụng hay không. Bất kỳ mẫu hoặc ý tưởng nào?
Cảm ơn trước sự giúp đỡ của bạn!
+1 Điều này nghe tốt –
điều này là tốt nhưng vẫn không năng động, nếu tôi cần lược đồ thay đổi cho hai phiên bản của cùng một ứng dụng trỏ đến hai trường hợp db khác? –
Hơn nữa, nếu tôi đặt lược đồ cho một EntityManager cụ thể với 'SET search_path TO ...', chuyển trình quản lý thực thể sang các phương thức khác không có hiệu ứng. Tôi cho rằng Wildfly (trong trường hợp của tôi) có một trong các kết nối của hồ bơi trước đó được tạo ra với lược đồ mặc định công cộng – Chris