Không, không có cách nào để làm điều đó ra khỏi hộp. Trước đây tôi đã tìm hiểu về nó bằng cách sử dụng cách tiếp cận sau - thay vì liên quan -:
- Tạo chú thích của riêng bạn,
@TableSpec
có không gian bảng và các thuộc tính cần thiết khác. - Mở rộng
org.hibernate.cfg.Configuration
và ghi đègetTableMappings()
để trả lạiTable
được trang trí đối tượng (xem bên dưới). - Mở rộng
org.hibernate.mapping.Table
và ghi đèsqlCreateString()
và / hoặcsqlAlterStrings()
để thêm thông số kỹ thuật vùng bảng (và các cài đặt bổ sung nếu có). - Thay vì sử dụng công cụ hbm2ddl (hoặc tác vụ kiến), hãy viết công cụ của riêng bạn để tạo
Configuration
của bạn đối tượng, xử lý tất cả các tệp lớp thu thập và diễn giải@TableSpec
của bạn chú thích và gọiConfiguration.generateSchemaCreationScript()
hoặcgenerateSchemaUpdateScript()
để tạo DDL thực tế.
Như tôi đã nói, khá liên quan :-) Như một sự thay thế, nếu TẤT CẢ các bảng được ánh xạ của bạn sử dụng cùng một vùng bảng, bạn có thể mở rộng phương ngữ Oracle mà bạn đang sử dụng và ghi đè getTableTypeString()
để trả về thông số không gian bảng của bạn. Mặc dù đây là một vụ hack xấu xí (vì mục đích ban đầu của tableTypeString là cung cấp loại động cơ MySQL), nhưng nó hoạt động và chắc chắn nhanh hơn và dễ dàng hơn rất nhiều so với cách tiếp cận trên.