Tôi có ứng dụng web Java EE 5 dựa trên Seam 2.2 với một loạt các bảng được ánh xạ tới thực thể JPA 1.0 qua Hibernate 3.3.3. Trong quá trình phát triển, nó chạy trên một Tomcat 6, Oracle 10 XE và Windows 7.Thực thi JPA trên từ đồng nghĩa thay vì bảng
Bây giờ, chúng tôi đã yêu cầu bộ phận hoạt động chia mô hình dữ liệu thành một lược đồ làm chủ sở hữu của tất cả các đối tượng cơ sở dữ liệu (myschema
) và một lược đồ hoạt động như người dùng cơ sở dữ liệu của ứng dụng (myschema_app
). Vì vậy, tôi đã làm như sau:
- tạo schema
myschema_app
- quyền đối tượng cấp trên tất cả các bảng cần thiết từ
myschema
(cả những người bình thường và n: m bảng trung gian) và trình tự tùy thuộc vào việc sử dụng (một hoặc nhiềuselect
,insert
,update
,delete
) đểmyschema_app
- tuyên bố từ đồng nghĩa riêng trong
myschema_app
để sử dụng cùng tên so với trước đây và giấu tên schema khác của tiền tố - thay đổi sở hữu
hibernate.default_schema
để đặt tên schema mới trongpersistence.xml
- thay đổi người dùng/mật khẩu trong định nghĩa nguồn dữ liệu Tomcat trong
context.xml
Khi tôi khởi động ứng dụng trong khi có hibernate.hbm2ddl.auto
thiết lập để validate
, tôi nhận được một ngoại lệ khi khuôn khổ cố gắng để tạo ra các EntityManagerFactory
nói với tôi rằng một cái bàn bị thiếu. Khi tôi thực hiện một câu lệnh chọn trực tiếp trong một công cụ sql với myschema_app
được kết nối, mọi thứ hoạt động tốt.
Tôi hiểu rằng việc sử dụng từ đồng nghĩa trên một bảng khác là minh bạch cho ứng dụng. Có ai là một ý tưởng những gì tôi có thể đã bỏ qua?
Đó là một số câu trả lời nhanh chóng, 10 điểm giành được. Vâng, tôi đã thấy, bỏ qua tham số đó làm cho ứng dụng hoạt động, nhưng thật đáng tiếc là Hibernate không hỗ trợ các từ đồng nghĩa trong quá trình xác nhận, bởi vì tôi nghĩ rằng nó là một điều tốt để xác thực lược đồ lúc khởi động để đảm bảo nó phù hợp với ứng dụng . –
Vấn đề ở lớp hibernates org.hibernate.tool.hbm2ddl.DatabaseMetadata trong đó các loại bảng được mã hóa cứng thành Chuỗi cuối cùng tĩnh riêng [] TYPES = {"TABLE", "VIEW"}; nơi thực sự cần là Chuỗi cuối cùng tĩnh riêng tư [] TYPES = {"TABLE", "VIEW", "ALIAS", "SYNONYM"}; – user482745